So schließen Sie eine URL von der Autorisierung aus

Lesezeit: 3 Minuten

Benutzer-Avatar
hudi

Meine web.xml sieht so aus:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>app</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Role</role-name>
    </auth-constraint>
</security-constraint>

Dies schützt jede Seite vor der Autorisierung, aber ich möchte /info ausschließen. Ist das möglich ?

Weglassen <auth-constraint> Element hinein <security-constraint> für Ressourcen, für die Sie keine Authentifizierung benötigen, wie:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>app</web-resource-name>
        <url-pattern>/info</url-pattern>
    </web-resource-collection>
    <!-- OMIT auth-constraint -->
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>app</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Role</role-name>
    </auth-constraint>
</security-constraint>

  • Ich habe diesen Ansatz ausprobiert und es hat nicht funktioniert. Ist das gültig?

    – Kirsche

    4. Februar 2016 um 0:17 Uhr

  • /path funktioniert bei mir nicht, während /path/* für alle Dateien unter /path funktioniert. Auch /path/myfile.xhtml funktioniert für einzelne Dateien, aber /path/*.xhtml funktioniert nicht

    – Jonathan L

    8. April 2016 um 23:56 Uhr

  • Ich habe es versucht und gut funktioniert, aber beachten Sie die containerspezifische Autorisierung: In meinem Fall sichert wildfly alle Ressourcen, also müssen Sie das auch im Hinterkopf behalten

    – Vokail

    26. Juli 2018 um 6:33 Uhr

Wenn Sie suchen Schlüsselmantel mit Frühlingsstiefel Lösung, dann versuchen Sie Folgendes in Ihrer Anwendungseigenschaftendatei:

keycloak.security-constraints[0].authRoles[0]=users
keycloak.security-constraints[0].security-collections[0].patterns[0]=/*
keycloak.security-constraints[1].security-collections[0].patterns[0]=/info

Dadurch wird die Sicherheit auf alle URLs außer angewendet /die Info

Benutzer-Avatar
Dileep

Ich weiß nicht, ob ich dich richtig verstehe! Mit meinem begrenzten Wissen denke ich, dass der zu sichernde Inhalt mit einem oder mehreren Web-Ressourcen-Sammlungselementen deklariert wird, um Sicherheit zu implementieren. Jedes Webressourcensammlungselement enthält eine optionale Reihe von URL-Musterelementen, gefolgt von einer optionalen Reihe von http-Methodenelementen. Der Elementwert url-pattern gibt ein URL-Muster an, mit dem eine Anforderungs-URL übereinstimmen muss, damit die Anforderung einem Zugriffsversuch auf gesicherten Inhalt entspricht. Der Wert des http-method-Elements gibt einen Typ der zuzulassenden HTTP-Anforderung an.

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Secure Content</web-resource-name>
        <url-pattern>/restricted/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>AuthorizedUser</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<!-- ... -->
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>The Restricted Zone</realm-name>
</login-config>
<!-- ... -->
<security-role>
    <description>The role required to access restricted content </description>
    <role-name>AuthorizedUser</role-name>
</security-role>

Die unter dem /restricted-Pfad der Webanwendung liegende URL erfordert eine AuthorizedUser-Rolle.

Eine Lösung besteht darin, ein alternatives Sicherheitsframework wie z Apache Shiro anstelle der containerbasierten Sicherheit. Dann ist es einfach, eine Ressource von den geschützten Inhalten auszuschließen. Mit Shiro würden Sie eingeben WEB-INF/shiro.ini:

[urls]
/info = anon
/**   = authc

1054820cookie-checkSo schließen Sie eine URL von der Autorisierung aus

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy