Mi requisito es proporcionar: La autenticación basada en contraseñas¿Puedo poner 3 esquemas de autenticación diferentes en la misma configuración de seguridad de primavera?
- ID de usuario. La autenticación basada
- Open ID
- autenticación basada en URL (es una costumbre sso impl tenemos)
en el mismo proyecto.
me han tratado de tapar en la seguridad de primavera en un proyecto existente como (código simplificada para simplificar):
<?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>
como se mencionó anteriormente, i necesidad de realizar un seguimiento de una dirección URL de la forma:/myApp/customLogin/12345, donde 1235 es la clave razón, al principio estábamos usando (código simplificada para mayor simplicidad)
<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>
¿Qué debo hacer para activar la seguridad de primavera para ayudar a manejar este esquema de autenticación de la tercera?
una pregunta corolario es: ¿puedo tener muchos proveedores de autenticación en el mismo proyecto? en caso afirmativo, ¿cómo pueden combinarse con diferentes funcionalidades (por ejemplo, una que proporciona autenticación basada en url, una que proporciona autenticación anónima, etc.)?
sso: de sesión único (usuario está autenticado por el mero hecho de tener un token). El mapeo de servlet escrito arriba está en mi web.xml. La autenticación de identificación abierta y la autenticación de contraseña de nombre de usuario funcionan bien. Mi página de inicio de sesión contiene dos formularios, uno para el inicio de sesión normal y otro para el inicio de sesión basado en id. –