cari

Rumah  >  Soal Jawab  >  teks badan

java - Spring Security + Tomcat SSO

大家讲道理大家讲道理2766 hari yang lalu807

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-18 10:07:43

    CAS Pada masa kini, kebanyakan SSO menggunakan penyelesaian CAS Anda boleh menyelidiknya.


    Carta alir SSO
    SSO dilaksanakan menggunakan cookie. Ringkasnya, selepas log masuk, maklumat pengesahan disimpan dalam cookie. Apabila terdapat permintaan app, anda boleh menyemak dahulu sama ada anda log masuk dalam aplikasi anda sendiri. Jika tidak log masuk, ia akan melompat ke sistem pengesahan Pada masa ini, sistem pengesahan mengesan maklumat cookie Jika terdapat maklumat log masuk, ia akan melompat kembali ke sistem yang meminta.

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:07:43

    Terima kasih kepada @kevinz atas nasihat, saya kini menggunakan kaedah ini:

    Setiap APP menggunakan Tomcat JDBCRealm untuk pengesahan (Pengesahan), tetapi menggunakan Spring Security untuk kebenaran. Kedua-duanya adalah berdasarkan pangkalan data maklumat pengguna yang sama.

    1. Hidupkan SSO dalam Tomcat -- ini sangat penting, jika tidak, apabila mengakses aplikasi web lain dalam domain yang sama, kuki tidak akan dibawa dan pengesahan tidak akan dapat dilakukan

    2. Dalam setiap aplikasi web, konfigurasikan Web.xml untuk menggunakan Tomcat untuk pengesahan -- jika Spring digunakan untuk pengesahan, SSO Tomcat tidak akan berfungsi

    3. Dalam setiap aplikasi web, konfigurasikan spring dan gunakan J2eePreAuthenticatedProcessingFilter untuk kawalan kebenaran (Kebenaran)

    Tatarajah pada musim bunga.xml

        <bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
            <constructor-arg name="strength" value="11" />
        </bean>
    
           <bean id="forbiddenEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
    
        <security:http auto-config="false" use-expressions="true" entry-point-ref="forbiddenEntryPoint">
            <security:custom-filter position="PRE_AUTH_FILTER" ref="preAuthFilter"/>
            <security:intercept-url pattern="/index/**" access="hasAnyRole('ROLE_SUPER')" />
            <security:session-management session-fixation-protection="none"/>
            <security:csrf disabled="true"/>
        </security:http>
    
     
        <bean id="preauthAuthProvider" class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
            <property name="throwExceptionWhenTokenRejected" value="true"/>
            <property name="preAuthenticatedUserDetailsService">
               <bean id="userDetailsServiceWrapper" class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
                <property name="userDetailsService" ref="nosUserDetailsService" />
            </bean>
            </property>
        </bean>
        
    
    
        <bean id="preAuthenticatedProcessingFilterEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint"/>
    
        <bean id="webXmlMappableAttributesRetriever" class="org.springframework.security.web.authentication.preauth.j2ee.WebXmlMappableAttributesRetriever"/>
        
        <bean id="simpleAttributes2GrantedAuthoritiesMapper" class="org.springframework.security.core.authority.mapping.SimpleAttributes2GrantedAuthoritiesMapper">
            <property name="attributePrefix" value=""/>
        </bean>
    
        <bean id="j2eeBasedPreAuthenticatedWebAuthenticationDetailsSource" class="org.springframework.security.web.authentication.preauth.j2ee.J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource">
            <property name="mappableRolesRetriever" ref="webXmlMappableAttributesRetriever"/>
            <property name="userRoles2GrantedAuthoritiesMapper" ref="simpleAttributes2GrantedAuthoritiesMapper"/>
        </bean>
        
        <bean id="preAuthFilter" class="org.springframework.security.web.authentication.preauth.j2ee.J2eePreAuthenticatedProcessingFilter">
            <property name="authenticationManager" ref="authenticationManager"/>
            <property name="authenticationDetailsSource" ref="j2eeBasedPreAuthenticatedWebAuthenticationDetailsSource"/>
        </bean>
    
        <security:authentication-manager alias="authenticationManager">
            <security:authentication-provider ref="preauthAuthProvider"/>
        </security:authentication-manager>

    balas
    0
  • Batalbalas