2017-06-01 3 views
0

Ich habe zwei Rollen definiert - Benutzerurl-Muster für sicherheits Einschränkung nicht funktioniert

<security-role> 
    <role-name>User</role-name> 
    </security-role> 

und Administrator

<security-role> 
     <role-name>Admin</role-name> 
    </security-role> 

in meiner web.xml.

Problem 1 -

Ich möchte die Anwendung von anderen Nutzern nur zugegriffen werden, wenn sie eine dieser beiden Rollen haben (es können mehrere Rollen werden in der Zukunft hinzugefügt, so habe ich keine * Rolle Muster verwendet)

<security-constraint id ="FullAccess"> 
    <web-resource-collection> 
     <web-resource-name>CPDC Application</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Admin</role-name> 
     <role-name>User</role-name> 
    </auth-constraint> 
    </security-constraint> 

Dies funktioniert nicht, wenn zwei Rollen vorhanden sind. Wenn Sie eine der Rollen entfernen, funktioniert sie wie erwartet. Was ist, wenn zwei Rollen Zugriff auf diese Ressource haben sollen?

Problem 2 -

Nun möchte ich auch nur Benutzer mit Admin-Rolle der Lage sein, alle Ressourcen zugreifen unten von adminresource/

<security-constraint id="AdminAccess"> 
    <web-resource-collection> 
    <web-resource-name>Admin resources</web-resource-name> 
    <url-pattern>/appname/servlet.svc/adminresource/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>Admin</role-name> 
    </auth-constraint> 
</security-constraint> 

Diese Einschränkung funktioniert nicht, und selbst jemand mit Eine Benutzerrolle kann auf URLs des Formulars zugreifen https://localhost:8080/appname/servlet.svc/adminresrouce/test

Könnte jemand bitte helfen?

+2

Ist 'appname' das Kontextstammverzeichnis Ihrer Anwendung? Wenn ja, gehört es nicht in das 'url-Muster' –

+0

Sieht aus wie das war das Problem. Könnten Sie es als Antwort posten? – SeeObjective

Antwort

2

Das sieht aus wie Sie den Kontextstamm aufgenommen haben /appname Ihre Anwendung:

<url-pattern>/appname/servlet.svc/adminresource/*</url-pattern> 

, der in keine url-pattern gehört, da sie alle in Bezug auf den Root-Kontext sind.

Verwandte Themen