Yêu cầu của tôi là cung cấp:Tôi có thể đặt 3 sơ đồ xác thực khác nhau trong cùng một cấu hình bảo mật mùa xuân không?
- Xác thực dựa trên mật khẩu người dùng.
- mở xác thực dựa id
- Url xác thực dựa (một phong tục của nó sso impl chúng tôi có)
trong cùng một dự án.
Tôi đã thử cắm vào an ninh mùa xuân vào một dự án hiện như (mã tước xuống vì đơn giản):
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">
<http auto-config="false">
<remember-me user-service-ref="rememberMeUserService" key="some custom key" /> <!-- TODO: Key made for testing reasons.... -->
<intercept-url pattern='/mainApplication/Main screen.html' access="ROLE_ADMIN"/>
<intercept-url pattern='/**' filters="none"/> <!-- Allow entry to login screen -->
<openid-login authentication-failure-url="/Login.html?error=true" default-target-url="/mainApplication/Main screen.html" user-service-ref="openIdUserService"/>
<form-login login-page="/Login.html" authentication-failure-url="/Login.html?error=true" always-use-default-target="true" default-target-url="/mainApplication/Main screen.html"/>
</http>
<beans:bean id="rememberMeUserService" class="mypackage.CustomUserService">
<beans:property name="usersService" ref="usersService"></beans:property>
</beans:bean>
<!-- Common login shared entry-point for both Form and OpenID based logins -->
<beans:bean id="entryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<beans:property name="loginFormUrl" value="/Login.html" />
</beans:bean>
<authentication-manager alias="authenticationManager"/>
<beans:bean id="MyCustomAuthenticationProvider" class="mypackage.CustomAuthenticationProvider">
<custom-authentication-provider />
<beans:property name="usersService" ref="usersService"></beans:property>
</beans:bean>
<beans:bean id="openIdAuthenticationProvider" class="org.springframework.security.providers.openid.OpenIDAuthenticationProvider">
<custom-authentication-provider />
<beans:property name="userDetailsService" ref="openIdUserService"/>
</beans:bean>
<beans:bean id="openIdUserService" class="mypackage.OpenIDUserDetailsService">
<beans:property name="usersService" ref="usersService"/>
</beans:bean>
<!-- Great, now i want to include SSO based sign on -->
<!-- need to intercept a url of the form : /myApp/customLogin/<key> where <key> is my token key -->
</beans:beans>
như đã đề cập ở trên, tôi cần phải theo dõi một url có dạng:/MyApp/customLogin/12345 nơi 1235 là chìa khóa mã thông báo, chúng tôi đã bước đầu sử dụng (mã tước xuống vì đơn giản)
<servlet-mapping>
<servlet-name>mySSOCapture</servlet-name>
<url-pattern>/myApp/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
gì tôi nên làm gì đây để kích hoạt tính năng an ninh mùa xuân để giúp tôi quản lý chương trình xác thực thứ ba này?
câu hỏi về hệ quả là: tôi có thể có nhiều nhà cung cấp xác thực trong cùng một dự án không? nếu có, thì làm thế nào chúng có thể được kết hợp với các chức năng khác nhau (ví dụ: một chức năng cung cấp xác thực dựa trên url, một cung cấp auth độc lập, vv)?
sso: Single Sign trên (người dùng được xác thực bởi chỉ có một token). Bản đồ servlet được viết ở trên nằm trong tệp web.xml của tôi. Xác thực id mở và xác thực mật khẩu tên người dùng đang hoạt động tốt. Trang đăng nhập của tôi chứa hai biểu mẫu một để đăng nhập bình thường và một cho đăng nhập dựa trên id mở. –