আমি কীভাবে স্প্রিং সুরক্ষার জন্য লগিং সক্ষম করব?


94

লগিং ব্যবহারকারীদের পরিচালনা করতে আমি স্প্রিং সিকিউরিটি সেট আপ করছি I আমি একজন ব্যবহারকারী হিসাবে লগ ইন করেছি এবং সফল লগইন করার পরে একটি অ্যাক্সেস অস্বীকৃত ত্রুটি পৃষ্ঠায় নিয়ে যাওয়া হয়েছে। আমি জানি না যে আসলে আমার ব্যবহারকারীকে কী কী ভূমিকা দেওয়া হয়েছে, বা এমন নিয়ম যা অ্যাক্সেসকে অস্বীকার করেছে, কারণ আমি কীভাবে স্প্রিং সিকিউরিটি লাইব্রেরির ডিবাগিং সক্ষম করতে পারি তা বুঝতে পারি না।

আমার সুরক্ষা এক্সএমএল:

<?xml version="1.0" encoding="UTF-8"?>
<beans ... >
    <!-- security -->

    <security:debug/><!-- doesn't seem to be working -->

    <security:http auto-config="true">

        <security:intercept-url pattern="/Admin**" access="hasRole('PROGRAMMER') or hasRole('ADMIN')"/>
        <security:form-login login-page="/Load.do"
            default-target-url="/Admin.do?m=loadAdminMain"
            authentication-failure-url="/Load.do?error=true"
            username-parameter="j_username"
            password-parameter="j_password"
            login-processing-url="/j_spring_security_check"/>
        <security:csrf/><!-- enable Cross Site Request Forgery protection -->
    </security:http>

    <security:authentication-manager>
        <security:authentication-provider>
            <security:jdbc-user-service data-source-ref="loginDataSource"
                users-by-username-query="SELECT username, password, active FROM userinformation WHERE username = ?"
                authorities-by-username-query="
                    SELECT ui.username, r.rolename 
                    FROM role r, userrole ur, userinformation ui 
                    WHERE ui.username=? 
                    AND ui.userinformationid = ur.userinformationid 
                    AND ur.roleid = r.roleid "
            />
            <security:password-encoder hash="md5"/>
        </security:authentication-provider>
    </security:authentication-manager>
</beans>

আমি log4j.logger.org.springframework.security=DEBUGআমার লগ 4j.properties যোগ করার চেষ্টা করেছি

আমি কীভাবে বসন্ত সুরক্ষার জন্য ডিবাগ আউটপুট পেতে পারি?


4
এই লিঙ্কটি চেক করুন যদি এটি আপনাকে সহায়তা করতে পারে।
pise

4
@ আপনি কি উত্তর হিসাবে যুক্ত করতে পারেন (কমপক্ষে কোনও প্রাসঙ্গিক অংশ / সংক্ষিপ্তসার সহ) যাতে আমি এটিকে সমাধান হিসাবে চিহ্নিত করতে পারি?
মার্টিন কার্নে

: এই প্রশ্নের উত্তর দেখুন stackoverflow.com/questions/7840088/...
nevster

হেহ - এটিকে উত্তর হিসাবে যুক্ত করার চেষ্টা করেছিল এবং এসও এটিকে একটি মন্তব্যে রূপান্তর করেছে।
নেভস্টার

উত্তর:


171

ধরে নিই যে আপনি স্প্রিং বুট ব্যবহার করছেন, অন্য একটি বিকল্পটি আপনার মধ্যে নিম্নলিখিতটি রাখবে application.properties:

logging.level.org.springframework.security=DEBUG

এটি অন্যান্য বেশিরভাগ স্প্রিং মডিউলগুলির ক্ষেত্রেও একই।

যদি আপনি স্প্রিং বুট ব্যবহার না করে থাকেন তবে আপনার লগিং কনফিগারেশনে সম্পত্তি স্থাপনের চেষ্টা করুন, যেমন লগব্যাক।

এখানে অ্যাপ্লিকেশন.আইএমএল সংস্করণও রয়েছে:

logging:
  level:
    org:
      springframework:
        security: DEBUG

4
এটি কি স্প্রিং বুট ধরে?
জন ক্যামেরিন

4
@ জন ক্যামেরিন হ্যাঁ, এটি হয়। লগের স্তরগুলিতে সেট application.propertiesকরা একটি স্প্রিং বুট বৈশিষ্ট্য। আপনি যদি স্প্রিং বুট ব্যবহার না করেন তবে আপনি org.springframework.securityঅন্যান্য মাধ্যমে লগ স্তর নির্ধারণ করতে পারেন (যেমন আপনার লগব্যাক.এক্সএমএল)।
দারিও সাইডল

4
ওয়েবফ্লাক্সের জন্য এটি কাজ করছে না: github.com/spring-projects/spring-security/issues/5758
bzhu

org.springframework.web.corsকর্স প্রসেসরের লগ সক্ষম করতে যুক্ত করুন ।
সিগজেন

70

আপনি @EnableWebSecurityটীকাটি দেওয়ার জন্য একটি বিকল্প ব্যবহার করে সহজেই ডিবাগিং সহায়তা সক্ষম করতে পারেন :

@EnableWebSecurity(debug = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    …
}

কীভাবে EnableWebFluxSecurity, এটির ডিবাগ বিকল্প নেই
bzhu

4
আহ, আকর্ষণীয়। তবে ওয়েবফ্লাক্স নিয়ে আমার কোনও অভিজ্ঞতা নেই।
মাইকেল পাইফেল

4
অ্যাপ্লিকেশন থেকে এই পতাকাটি নিয়ন্ত্রণ করার কোনও উপায় আছে
ropসম্পত্তি

25

স্প্রিংস ব্যবহার করে বেসিক ডিবাগিং DebugFilterএইভাবে কনফিগার করা যায়:

@EnableWebSecurity
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.debug(true);
    }
}

11
এটি বেশ কিছু দুর্বল ডিবাগ লগিং। এটি কেবল অনুরোধ শিরোনাম এবং "সুরক্ষা ফিল্টার চেইন" প্রিন্ট করে। অ্যাক্সেস সমস্যাগুলি ট্র্যাক করার সময় মোটেই কার্যকর নয়।
ক্লো

4

আপনি @ সক্ষমযোগ্য ওয়েবসিকিউরিটি টিকাশনের জন্য একটি বিকল্প ব্যবহার করে সহজেই ডিবাগিং সহায়তা সক্ষম করতে পারেন:

@EnableWebSecurity(debug = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    …
}

আপনার অ্যাপ্লিকেশনটিতে প্রোফাইল-নির্দিষ্ট নিয়ন্ত্রণের দরকার হলে {প্রোফাইল}। ব্যক্তিগত ফাইল file

org.springframework.security.config.annotation.web.builders.WebSecurity.debugEnabled=false

বিস্তারিত পোস্ট পান: http://www.bytefold.com/enable-disable-profile-specific-spring-security-debug-flag/


0

Webflux প্রতিক্রিয়াশীল অ্যাপসের জন্য স্প্রিং নিরাপত্তা লগিং এখন সংস্করণ 5.4.0-, M2 সাথে উপলব্ধ শুরু হচ্ছে (যেমন দ্বারা mentionned @bzhu মন্তব্যে আমি কিভাবে স্প্রিং সিকিউরিটি জন্য লগিং সক্রিয় করবেন? )

এটি কোনও জিএ রিলিজ না হওয়া পর্যন্ত গ্রেডলে এই মাইলফলকটি কীভাবে পাবেন তা এখানে রয়েছে

repositories {
    mavenCentral()
    if (!version.endsWith('RELEASE')) {
        maven { url "https://repo.spring.io/milestone" }
    }
}

// Force earlier milestone release to get securing logging preview
// https://docs.spring.io/spring-security/site/docs/current/reference/html5/#getting-gradle-boot
// https://github.com/spring-projects/spring-security/pull/8504
// https://github.com/spring-projects/spring-security/releases/tag/5.4.0-M2
ext['spring-security.version']='5.4.0-M2'
dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }

}

-7

ডিফল্টরূপে স্প্রিং সিকিউরিটি ব্যবহারকারীকে লগইন করার পরে মূলত (/ লড.ডো আপনার ক্ষেত্রে অনুরোধ করা) URL এ পুনঃনির্দেশ করে।

আপনি এই আচরণটি অক্ষম করতে সর্বদা-ব্যবহার-ডিফল্ট-লক্ষ্য সেট করতে পারেন:

 <security:http auto-config="true">

    <security:intercept-url pattern="/Admin**" access="hasRole('PROGRAMMER') or hasRole('ADMIN')"/>
    <security:form-login login-page="/Load.do"
        default-target-url="/Admin.do?m=loadAdminMain"
        authentication-failure-url="/Load.do?error=true"
        always-use-default-target = "true"
        username-parameter="j_username"
        password-parameter="j_password"
        login-processing-url="/j_spring_security_check"/>
    <security:csrf/><!-- enable Cross Site Request Forgery protection -->
</security:http>

4
এটি অপের প্রশ্নের উত্তর দেয় না।
ম্যাডব্রাইকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.