常用的方法是使用AuthenticationEntryPoint
將用戶重定向到外部認證接口,例如LoginUrlAuthenticationEntryPoint
。 Spring Security在它確定用戶需要進行身份驗證時會自動調用入口點。
一旦用戶返回到您的應用程序,它應該打它擴展了AbstractPreAuthenticatedProcessingFilter
,並從您的Cookie /頭/令牌(後也許有些有效性和完整性檢查)的方法getPreAuthenticatedPrincipal
提取用戶名自定義過濾器。
Spring配置可能類似於:
<security:http entry-point-ref="externalAuthentication">
<security:custom-filter after="BASIC_AUTH_FILTER" ref="cookieAuthentication"/>
<security:intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY"/>
</security:http>
<bean id="externalAuthentication" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<constructor-arg value="http://server.local/authenticationService"/>
</bean>
<bean id="cookieAuthentication" class="custom class extending org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter">
...
</bean>