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

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

répondre à tous(2)
左手右手慢动作

CAS De nos jours, la plupart des SSO adoptent la solution CAS. Vous pouvez la rechercher.


Organigramme SSO
SSO est implémenté à l'aide de cookie. Pour faire simple, après la connexion, les informations d'authentification sont stockées dans cookie. Lorsqu'il y a une demande app, vous pouvez d'abord vérifier si vous êtes connecté dans votre propre application. S'il n'est pas connecté, il passera au système d'authentification. À ce moment, le système d'authentification détecte cookie les informations de connexion, il reviendra au système demandeur.

Peter_Zhu

Merci à @kevinz pour les conseils, j'utilise désormais cette méthode :

Chaque application utilise Tomcat JDBCRealm pour l'authentification (Authentification), mais utilise Spring Security pour l'autorisation. Les deux sont basés sur la même base de données d’informations utilisateur.

  1. Activez le SSO dans Tomcat -- c'est très important, sinon lors de l'accès à d'autres applications Web du même domaine, les cookies ne seront pas apportés et l'authentification ne sera pas possible

  2. Dans chaque application Web, configurez Web.xml pour utiliser Tomcat pour l'authentification -- si Spring est utilisé pour l'authentification, le SSO de Tomcat ne fonctionnera pas

  3. Dans chaque webapp, configurez Spring et utilisez J2eePreAuthenticatedProcessingFilter pour le contrôle des autorisations (Autorisation)

Configuration dans spring.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>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!