How to exclude one url from authorization

后端 未结 4 1244
天涯浪人
天涯浪人 2020-12-04 16:21

My web.xml looks like:


    
        

        
相关标签:
4条回答
  • 2020-12-04 16:48

    If you are looking for keycloak with Spring boot solution, then try likes this in your application properties file:

    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
    

    This will apply security on all URLs except /info

    0 讨论(0)
  • 2020-12-04 16:51

    Omit the <auth-constraint> element in <security-constraint> for resources for which you don't need authentication like:

    <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>
    
    0 讨论(0)
  • 2020-12-04 17:07

    I don't know whether I get you right ! With my limited knowledge I think in-order to implement security the content to be secured is declared using one or more web-resource-collection elements. Each web-resource-collection element contains an optional series of url-pattern elements followed by an optional series of http-method elements. The url-pattern element value specifies a URL pattern against which a request URL must match for the request to correspond to an attempt to access secured content. The http-method element value specifies a type of HTTP request to allow.

    <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>
    

    URL lying under the web application's /restricted path requires an AuthorizedUser role.

    0 讨论(0)
  • 2020-12-04 17:13

    A solution is to use an alternate security framework like Apache Shiro instead of the container based security. Then it's easy to exclude a resource from the protected content. Using Shiro you would put in WEB-INF/shiro.ini:

    [urls]
    /info = anon
    /**   = authc
    
    0 讨论(0)
提交回复
热议问题