Programmatique, l'utilisation de Ressort de Sécurité

Je suis en utilisant Wicket avec le Guichet Auth Projet pour ma couche de présentation et j'ai donc intégré avec Ressort de Sécurité. C'est la méthode qui est appelée par le Guichet pour l'authentification pour moi:

@Override
public boolean authenticate(String username, String password) {
    try {
        Authentication request = new UsernamePasswordAuthenticationToken(
                username, password);
        Authentication result = authenticationManager.authenticate(request);
        SecurityContextHolder.getContext().setAuthentication(result);
    } catch (AuthenticationException e) {
        return false;
    }
    return true;
}

Le contenu (à l'intérieur ) de mon Ressort de Sécurité XML de configuration sont:

<http path-type="regex">
    <form-login login-page="/signin"/>
<logout logout-url="/logout" />
</http>
<global-method-security secured-annotations="enabled" />
<authentication-manager alias="authenticationManager"/>
<authentication-provider user-service-ref="userService">
    <password-encoder ref="bcryptpasswordencoder" />
</authentication-provider>

La section 2.3.6. Session Attaque De Fixation De La Protection De L' de la documentation de référence dit:

Fixation de Session attaques sont un risque potentiel où il est possible
pour un attaquant malveillant afin de créer un
session en accédant à un site, puis
persuader un autre utilisateur de se connecter avec
de la même session (par l'envoi d'un
le lien contenant l'identifiant de session
comme un paramètre, par exemple). Printemps
De sécurité protège contre cette
automatiquement par la création d'une nouvelle
session lorsqu'un utilisateur se connecte. Si vous
n'avez pas besoin de cette protection, ou il
les conflits avec une autre disposition,
vous pouvez contrôler le comportement à l'aide de
la session de fixation et de protection de l'
attribut , qui a trois
options:

  • migrateSession - crée une nouvelle session, une copie de l'existant
    les attributs de session pour la nouvelle session. C'est la valeur par défaut.
  • aucun - Ne pas faire n'importe quoi. La session d'origine seront conservés.
  • newSession - Créer une nouvelle session "propre", sans copier les
    session existante de données.

L'authentification fonctionne, mais j'ai que je suis assez nouveau dans le Printemps de Sécurité, j'ai quelques questions auxquelles j'ai besoin de réponses trop:

  • Normalement pour la connexion, je ne posterais les informations d'authentification pour j_spring_security_check et laissez Printemps de Sécurité effectuer le code d'authentification. Je voudrais avoir la protection contre la fixation de session attaques, je me les procurer quand j'exécute des programmes de connexion comme je le fais? Et si non, qu'aurais-je à faire pour l'obtenir?
  • Comment dois-je effectuer programmatique de déconnexion?
  • Que je vais utiliser programmatique de connexion et de déconnexion, comment puis-je désactiver le Printemps de l'interception de ces URL?

Mise à jour:
Pour la session attaque de fixation de la protection, il me semble que j'ai besoin d'appeler la méthode dans le SessionUtils classe avec la signature startNewSessionIfRequired(HttpServletRequest request, boolean migrateAttributes, SessionRegistry sessionRegistry).

Comment puis-je obtenir le SessionRegistry exemple, j'ai besoin de passer? Je ne peux pas trouver un moyen de créer un alias ID pour elle, ou comment faire pour obtenir l'ID ou le nom.

  • Bounty est donnée à la première publication d'une réponse pour les trois questions ci-dessus
  • Hey Kent - j'ai répondu aux questions et de vous laisser le bounty expiré - pourquoi?
  • Désolé, j'ai eu quelques questions personnelles, qui m'a gardé de se connecter.
InformationsquelleAutor | 2009-06-18