Comment mettre en œuvre au Printemps pré-filtre d'authentification?
Je suis en train de mettre en œuvre des pré-authenicated de la sécurité dans notre application web, mais je ne suis pas sûr de savoir comment le faire correctement. Il n'y a pas que de nombreux exemples. Et ceux qui semblent avoir une beaucoup plus simple d'installation que le nôtre.
Nous obtenons nos informations d'authentification dans un en-tête de requête XML avec un prénom, nom, ID utilisateur et une erreur de balise, si tout a eu lieu.
Je suis l'extension de AbstractPreAuthenticatedProcessingFilter
et dans son getPreAuthenticatedPrincipal()
j'ai extrait de l'en-tête, unmarshall elle, et ne la validation de certains.
Maintenant, les questions:
- Si tout est OK, je viens de retourner mon unmarshalled shibboleth de
getPreAuthenticatedPrincipal()
? - Si quelque chose ne va pas, dois-je viens de jeter un
PreAuthenticatedCredentialsNotFoundException
? - Que dois-je retourner de
getPreAuthenticatedCredentials()
? Est"N/A"
suffisant?
Je suppose qu'à un certain moment, j'ai t créer un Authentication
et un Principal
.
- Est-ce une bonne approche?
Principal dynamicUser = new DynamicUser(rijksregisterNummer); List<SimpleGrantedAuthority> grantedAuthorities = Arrays.asList(new SimpleGrantedAuthority("ROLE_USER")); Authentication authentication = new AnonymousAuthenticationToken(rijksregisterNummer, dynamicUser, grantedAuthorities);
- À ce point (dans la classe) dois-je mettre dans le Ressort de Sécurité?
- Ce que les autres classes dois-je aller?
- Comment dois-je configurer le Printemps de Sécurité XML de configuration? De cette façon? Ce qui me manque?
<http> <custom-filter position="PRE_AUTH_FILTER" ref="myPreAuthFilter" /> </http> <bean id="myPreAuthFilter" class="my.package.MyPreAuthenticationFilter"> <property name="authenticationManager" ref="authenticationManager"/> </bean> <authentication-manager alias="authenticationManager"> <authentication-provider ref="customAuthenticationProvider"/> </authentication-manager>
Des utilisateurs externes à aller par le biais de pré-authentification à l'aide d'une e-ID et le lecteur de carte) et d'appuyer sur notre application web. Interne, cependant, d'avoir à s'authentifier avec un uername et le mot de passe normal de la procédure d'authentification.
- Comment puis-je le mettre en place que lorsqu'il n'y a pas un shibboleth (donc une connexion à partir de nos utilisateurs internes), je peux afficher un formulaire de connexion?
Beaucoup de question, je sais. J'espère que vous pourrez me guider.
Instructif, mais malheureusement, elle n'explique pas comment utiliser un avant filtre d'authentification.
Avez-vous lu la ref manuel? Une combinaison de cela, le pré-auth exemple d'application et les différents de la boîte implémentations devrait vous donner plus de ce que vous avez besoin.
OriginalL'auteur Koohoolinn | 2013-11-25
Vous devez vous connecter pour publier un commentaire.
C'est une vieille question, mais toujours d'actualité. Comme l'a dit, il y avait beaucoup de questions. Ce qui a attiré mon oeil a été le constat qu'il n'y a pas beaucoup d'exemple implémentations.
J'ai joué avec une mise en œuvre. Vous pouvez le trouver ici: https://github.com/klaalo/reqTokenAuth.
Il est facile de mélanger et assortir avec des méthodes d'authentification sur
WebSecurityConfigurerAdapter
de sorte que vous pouvez avoir la forme traditionnelle de l'authentification basée sur l'héritage pour les utilisateurs.La mise en œuvre est fondée sur l'établissement où Apache mod_auth_openidc se trouve en face de l'application. Cependant, la mise en œuvre devrait fonctionner également avec SP Shibboleth.
Je n'ai pas tout à fait attraper votre sentiment à propos de l'envoi d'informations d'authentification en-têtes de Requête HTTP au format XML. Shibboleth SP est sur SAML-authentification. Vous devez laisser les détails à propos de l'authentification pour le SAML SP et seulement profiter des avantages de facilement authentifié l'utilisateur dans votre application. Il n'y a pas besoin de unmarshalling le XML, Shibboleth fait pour vous. Vous obtenez les détails de l'utilisateur comme nettoyer les Chaînes représentant SAML des valeurs d'attribut dans les en-Têtes HTTP ou
HttpServletRequest
attributs (quand Tomcat/AJP est utilisé).OriginalL'auteur KLaalo