Utilizzo la sicurezza di primavera con HTTP Basic Auth per proteggere una webapp java. Nella mia webapp ho bisogno di ottenere il nome utente e la password dell'utente corrente per poterli autenticare ulteriormente con un altro servizio. Posso ottenere il nome utente, ma non la password.Richiamare la password dell'utente corrente da spring security
Ho provato a utilizzare SecurityContextHolder.getContext().getAuthentication()
per accedere a queste informazioni come suggerito qui How can I get plaintext password from spring-security? ma la password viene restituita come null
.
Come posso ottenere la password?
Grazie.
Questo è il mio applicationContext-security.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:sec="http://www.springframework.org/schema/security" 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-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<sec:http authentication-manager-ref='authenticationManager'>
<sec:intercept-url pattern="/spring/**" access="ROLE_USER" />
<sec:http-basic />
</sec:http>
<bean id="basicAuthenticationFilter"
class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter">
<property name="authenticationManager" ref="authenticationManager" />
<property name="authenticationEntryPoint" ref="authenticationEntryPoint" />
</bean>
<bean id="authenticationEntryPoint"
class="org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint">
<property name="realmName" value="Announcements Rest Realm" />
</bean>
<bean id="authenticationManager"
class="org.springframework.security.authentication.ProviderManager">
<property name="providers">
<list>
<ref local="authProvider" />
</list>
</property>
</bean>
<bean id="authProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="userDetailsService" />
</bean>
<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
<constructor-arg>
<list>
<sec:filter-chain pattern="/spring/**" filters="basicAuthenticationFilter" />
</list>
</constructor-arg>
</bean>
<sec:user-service id="userDetailsService">
<sec:user name="admin" password="**" authorities="ROLE_USER, ROLE_ADMIN" />
<sec:user name="user" password="**" authorities="ROLE_USER" />
</sec:user-service>
non sto usando ricordati di me, eseguito come utente o passare, per quanto a mia conoscenza (a meno che siano attivati per impostazione predefinita ? Non sto usando auto-config). Inoltre non posso usare l'autenticazione del modulo in quanto la mia webapp è un servizio web. – ssloan
ok, quindi come informa SI che l'utente è stato autenticato con successo? Se si utilizza SecurityContextHolder.getContext(). SetAuthentication (...), quale tipo di token si passa? –
Non sto chiamando setAuthentication() direttamente - deve essere in corso in uno dei bean che ho configurato. Aggiornerò il mio post con il mio applicationContext-security.xml che aiuta. – ssloan