Quelqu'un peut-il s'il vous plaît aidez-moi dans ce domaine. J'ai été désigné pour sécuriser une application Web existante. Lorsqu'un utilisateur se connecte déjà dans l'application (cela signifie que la session est active), un attaquant peut alors deviner les champs de saisie, enregistrer l'URL et créer une page similaire et envoyer un lien hypertexte. Si l'utilisateur clique sur ce lien, il ne passera pas par javascript, au contraire, il va frapper le contrôleur de printemps. Puisque la session est active, elle sauvegardera les données des attaquants dans la base de données.Printemps MVC Security Token authentification
Voici ce que nous utilisons maintenant. 1) Sécurité printemps
<http auto-config="true">
<intercept-url pattern="/**" access="ROLE_ADMIN, ROLE_HR" />
<custom-filter position="PRE_AUTH_FILTER" ref="siteminderFilter" />
</http>
<beans:bean id="siteminderFilter" class="com.mywbsite.security.UserFilter">
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="continueFilterChainOnUnsuccessfulAuthentication" value="false"/>
</beans:bean>
Cette méthode est appelée lorsque les journaux de l'utilisateur dans l'application première fois
protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
String userId = request.getHeader("uid");
logger.info("<<<<<<<<<<<<<<<<<<<<<userId>>>>>>>>>>>>>>>>>>>>>>> : "+userId);
return userId;
}
Cette méthode est appelée lorsque l'utilisateur fait tout ce qui appelle un contrôleur/java
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println(request.getParameter(BaseConstants.DV_USER_SESSION_IDENTIFIER));
logger.info(request.getParameter(BaseConstants.DV_USER_SESSION_IDENTIFIER));
logger.info("Existing the UserFilter.doFilter method...");
}
Solution: Dans le contrôleur/filtre, je dois identifier si la demande provient de mon application ou de n'importe où ailleurs.
Voici ce que je pense mettre en œuvre. Créez un jeton aléatoire à l'intérieur de la méthode getPreAuthenticatedPrincipal() et stockez-le en session.
Pouvez-vous m'aider s'il vous plaît comment rendre facile. Merci d'avance
Essayez-vous d'utiliser siteminder? et implémenter l'authentification unique? Vous n'avez pas besoin de gérer explicitement la variable de session. –
@JerinJoseph: Juste maintenant mis à jour le problème et comment je pense résoudre ce problème. Pourriez-vous s'il vous plaît le revoir. – SKumar