如何从授权中排除一个网址

hud*_*udi 47 java authentication web.xml java-ee

我的web.xml看起来像:

<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>
Run Code Online (Sandbox Code Playgroud)

这保护每一方免受授权,但我想要排除/信息.这可能吗 ?

小智 82

<auth-constraint>元素省略<security-constraint>为不需要身份验证的资源,例如:

<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>
Run Code Online (Sandbox Code Playgroud)

  • <url-pattern>/path </ url-pattern>对我不起作用,而<url-pattern>/path/*</ url-pattern>适用于放在/ path下的所有文件.此外,<url-pattern> /path/myfile.xhtml </ url-pattern>适用于单个文件,但<url-pattern>/path/*.xhtml </ url-pattern>不起作用 (6认同)
  • 我尝试了这种方法,但没有奏效。这是有效的吗? (2认同)

Ady*_*Ady 7

如果您正在寻找带有Spring Boot解决方案的keycloak,请在您的应用程序属性文件中尝试这样的操作:

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
Run Code Online (Sandbox Code Playgroud)

这将对除/info之外的所有 URL 应用安全性