Est-il possible de mentionner à la fois l'authentification basée sur des formulaires et l'authentification de base dans la sécurité Spring en utilisant la configuration d'espace de noms sans surcharger? Pour que l'application puisse servir à la fois la requête basée sur le navigateur et le client distant.Sécurité de printemps - comment mentionner l'authentification de base et l'authentification de base
Sécurité de printemps - comment mentionner l'authentification de base et l'authentification de base
Répondre
Il semble qu'il ne soit pas possible de déclarer à la fois l'authentification de formulaire et de base à l'aide de la configuration de l'espace de noms.
Un lien de référence à la communauté du printemps: http://forum.springsource.org/showthread.php?t=72724&highlight=form+basic+authentication
Le résultat final que vous voulez est possible, j'ai couru dans ce même problème et est ma solution ici.
À tout moment, lors de la définition d'un formulaire de connexion dans l'espace de noms, il remplace automatiquement tous les autres filtres d'authentification que vous appliquez via l'espace de noms. Cela se fait à travers l'ordre de la chaîne de filtres regardez FilterChainOrder.java dans la sécurité de printemps pour voir comment la commande est effectivement appliquée à chaque filtre. Pour contourner ce problème, supprimez la balise http-basic de l'espace de noms, puis définissez manuellement le bean pour gérer l'authentification de base et placez son ordre devant AuthenticationProcessingFilter car il s'agit du filtre de sécurité de printemps qui gérera le formulaire-login. Le ressort BasicProcessingFilter permet de gérer l'authentification de base est un filtre passif, ce qui signifie que si les informations d'identification sont manquantes, il continuera dans la chaîne de filtre jusqu'à ce qu'il trouve le filtre approprié pour gérer la demande.
Maintenant, en définissant manuellement le bean BasicProcessingFilter, nous pouvons définir l'ordre dans lequel il apparaîtra dans la chaîne de filtres. est Ci-dessous un exemple des déclarations xml supplémentaires que vous devez fournir dans le fichier XML de sécurité (Spring Security < 3.x)
<bean id="basicProcessingFilter" class="org.springframework.security.ui.basicauth.BasicProcessingFilter">
<property name="authenticationManager"><ref bean="authenticationManager"/></property>
<security:custom-filter before="AUTHENTICATION_PROCESSING_FILTER"/>
<property name="authenticationEntryPoint"><ref bean="authenticationEntryPoint"/></property>
</bean>
<bean id="authenticationEntryPoint"
class="org.springframework.security.ui.basicauth.BasicProcessingFilterEntryPoint">
<property name="realmName" value="My Realm Here"/>
</bean>
Notez également si votre référence AuthenticationManager ne se trouve pas, vous pouvez ajouter un alias votre espace de noms comme celui ci-dessous.
<security:authentication-manager alias="authenticationManager"/>
Le résultat final est le filtre de base sera appliqué comme un filtre passif et si ses informations d'identification requises manquent, il continuera dans la chaîne de filtre et le filtre de forme connexion sera alors gérer.
Le problème avec cette approche est que si les informations d'identification sont correctement entrées, la réponse est la page de connexion du filtre formulaire-connexion.
Cependant, il semble que ce problème sera résolu au printemps dans la version 3.1 de la sécurité de printemps et ce travail ne sera plus nécessaire.
Le response by @grimesjm a raison. Toutefois, si vous utilisez 3.x Spring vous devez adapter les noms de classe à:
<bean id="basicProcessingFilter" class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter">
<property name="authenticationManager">
<ref bean="authenticationManager" />
</property>
<property name="authenticationEntryPoint">
<ref bean="authenticationEntryPoint" />
</property>
</bean>
<bean id="authenticationEntryPoint"
class="org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint">
<property name="realmName" value="Your realm here" />
</bean>
Et
<sec:http auto-config="true">
... your intercept-url here
<sec:custom-filter before="SECURITY_CONTEXT_FILTER" ref="basicProcessingFilter" />
<sec:form-login ... />
....
</sec:http>
Je ne sais pas si placer le filtre avant SECURITY_CONTEXT_FILTER
est la meilleure option ou non .
Il est maintenant possible avec Spring Security 3.1.0
Ceci est correct, voici un lien qui va développer sur cette réponse: http://stackoverflow.com/questions/3671861/two-realms-in-same-application-with-spring-security –
Je pense que le but est de L'API REST prend-elle en charge les deux authentifications dans le même domaine. Définir deux royaumes, c'est comme définir deux guerres - ça marche mais ce n'est pas idéal. – Eugen
- 1. Comment faire l'authentification LDAP et l'autorisation de base de données dans la sécurité de printemps?
- 2. Sessions de base de données au printemps
- 3. Sécurité de base dans JSF
- 4. Sécurité de la base de données
- 5. Sécurité de printemps: comment utiliser MethodInvocation au lieu de FilterInvocation
- 6. Sécurité de printemps: Fournisseur d'authentification personnalisé pour 'mot de passe unique' et 'questions de sécurité'
- 7. sécurité de printemps, tomcat, méthode getRemoteUser
- 8. Cas de test: Base de données de simulation utilisant des haricots de printemps
- 9. Création de classes de base de base
- 10. iPhone et données de base
- 11. Photos et Base de données
- 12. Puis-je avoir plusieurs contextes de sécurité avec la sécurité de printemps?
- 13. mentionner LINQ
- 14. Comment ouvrir une base de données de base?
- 15. transactions de base de données et threads
- 16. Connectivité de base de données avec Access2007
- 17. .NET et couches de base de données
- 18. ORM et index de base de données
- 19. Mélange de sérialisation personnalisée et de base?
- 20. Normes de base de données SQL Server et meilleures pratiques
- 21. Question de base sur jquery et .NET
- 22. Schémas de base de données SQL Server
- 23. Suggestions de conception de sécurité pour la liste de contrôle d'accès dans la base de données?
- 24. Comment désinfecter l'entrée de la base de données en Java?
- 25. développement Agile et base de données change
- 26. de base de données
- 27. Quelles sont les pratiques de sécurité de base de formulaire ASP.NET?
- 28. base de données de rapport de cristal
- 29. Bibliothèque de classes de base
- 30. Attacher et détacher une base de données
Ils ont ajouté la possibilité d'ajouter plusieurs