recherche

Maison  >  Questions et réponses  >  le corps du texte

java - Spring Security + Tomcat SSO

大家讲道理大家讲道理2820 Il y a quelques jours847

répondre à tous(2)je répondrai

  • ringa_lee

    ringa_lee2017-04-18 10:07:43

    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.

    répondre
    0
  • 天蓬老师

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

    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>

    répondre
    0
  • Annulerrépondre