2014-06-18 2 views
0

Utilisation de Wildfly 8.1.0.FinalComment faire pour ne pas utiliser l'autorisation pour ressource ouverte lorsque l'autorisation est incluse dans la demande?

Je souhaite créer une application Web nécessitant une authentification de base pour l'accès à/api/*, mais le reste de l'application doit être ouvert. Pour ce faire, j'ai le web.xml suivant:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Api access</web-resource-name> 
      <url-pattern>/api/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>api</role-name> 
     </auth-constraint> 
    </security-constraint> 

    <security-role> 
     <role-name>api</role-name> 
    </security-role> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>Authentication requires api access</realm-name> 
    </login-config> 
</web-app> 

Test avec un navigateur, cela fonctionne comme prévu.

http://localhost:8080/myapp/api 

... nécessite une authentification.

http://localhost:8080/myapp 

... ne nécessite pas d'authentification.

vient ici la partie la plus délicate:

Un tiers accès/myapp et comprend un en-tête d'autorisation dans la demande:

Authorization: Basic ZGlsbDpkYWxs 

Ce n'est pas un utilisateur enregistré dans wildfly, mais que la matière shouldnt parce que/myapp est ouvert et ne nécessite pas d'autorisation. Cependant ce qui se passe est ceci:

401 Unauthorized 

Pourquoi? Je n'ai pas dit utiliser des contraintes de sécurité pour/myapp, mais par défaut les contraintes de sécurité pour lesquelles j'ai enregistré/myapp/api

Ceci est un nouveau comportement qui a été introduit avec undertow, car avec Jboss AS 7.1.1 .Final cela n'est pas arrivé.

Comment puis-je demander à ne pas utiliser l'autorisation pour une ressource ouverte lorsque l'autorisation est incluse dans la demande?

Répondre

Questions connexes