Printemps de Sécurité: comment exclure certaines ressources?
J'ai de la définition suivante...
<bean id="fsi" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager"/>
<property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/>
<property name="objectDefinitionSource">
<sec:filter-invocation-definition-source >
<sec:intercept-url pattern="/secure/css/**" access="ROLE_TIER0"/>
<sec:intercept-url pattern="/secure/images/**" access="ROLE_TIER0"/>
<sec:intercept-url pattern="/**" access="ROLE_TIER0"/>
</sec:filter-invocation-definition-source>
</property>
</bean>
J'aimerais avoir les ressources sur cette url...
"/non/**"
Ouvert à tous les appels, c'est à dire pas de sécurité autour d'elle.
J'ai essayé d'ajouter ...
<sec:intercept-url pattern="/nonsecure/**" access="permitAll" />
Mais cela provoque Websphere lever une erreur sur
Unsupported configuration attributes: [permitAll]
Quelqu'un peut me dire comment faire pour exclure cette URL de la sécurité?
- Vous devriez envisager d'accepter enyo réponse parce que le vieux Gandalf démarche n'est plus pris en charge.
Vous devez vous connecter pour publier un commentaire.
Au printemps de sécurité 3.1.x l'utilisation de filtres="none" est obsolète. Au lieu de cela, vous utilisez plusieurs
<http>
balises comme ceci:http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-form-and-basic
Je pense que vous devez ajouter
use-expressions
tag à votrehttp
de configuration en xml de sécurité par exemple:Edit:
Eh bien, je ne suis pas certain de la version de printemps de sécurité que vous utilisez. Je sais que cela fonctionne sur la 3.0 mais pour les anciennes versions, je ne suis pas sûr.
auto-config
- j'ai juste appris la manière dure. À partir du Printemps documentation: "l'Utilisation de cet attribut n'est pas recommandé."accès="IS_AUTHENTICATED_ANONYMOUSLY" Est la solution.
Je l'ai trouvé sur le lien suivant http://syntx.io/adding-http-basic-auth-to-restful-services-in-java-and-spring/
Intercepte sont évaluées de haut en bas. Si vous écrivez ce /* * * * avant /getIntelFeed/** puis tous les service passe par /** et la sécurité devraient être appliquées sur tous les services. Dans de tels cas /getIntelFeed/** serait inefficace.
access="IS_AUTHENTICATED_ANONYMOUSLY
pour monintercept-url pattern
entrée. Cependant, j'ai eu une erreur 401 en essayant d'accéder au modèle d'url. Pourquoi serait-elle? Notez que j'ai suivi votre "intercepte sont évaluées de haut en bas" de la prudence.Essayer:
filters="none"
sauter des filtres personnalisés?org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: The use of "filters='none'" is no longer supported. Please define a separate <http> element for the pattern you want to exclude and use the attribute "security='none'"
Pour être en mesure d'utiliser des expressions telles que [permitAll] vous devez ajouter un WebExpressionVoter à votre AccessDecisionManager
Vous ne spécifiez pas le reste de votre configuration, et depuis, il semble que vous avez explicite haricot de configuration, il est difficile pour nous de deviner exactement comment vous avez des choses configuré. Je vais le dire qu'une certaine combinaison des réponses ci-dessus sont correctes.
Bonne chance!