java - Spring Security + Tomcat SSO
大家讲道理
大家讲道理 2017-04-18 10:05:43
0
2
826
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(2)
左手右手慢动作

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.

Peter_Zhu

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>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan