59

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

これにより、すべての側が承認から保護されますが、/info を除外したいと考えています。これは可能ですか?

4

4 に答える 4

105

次のように、認証が必要ないリソースの<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>
于 2013-02-25T07:32:13.770 に答える
7

Spring ブートソリューションでキークロークを探している場合は、アプリケーション プロパティ ファイルで次のように試してください。

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

これにより、 /infoを除くすべての URL にセキュリティが適用されます

于 2019-05-21T13:31:26.353 に答える
0

私はあなたが正しいかどうかわかりません!私の限られた知識では、セキュリティを実装するために、保護するコンテンツは 1 つ以上の web-resource-collection 要素を使用して宣言されていると思います。各 web-resource-collection 要素には、オプションの一連の url-pattern 要素と、それに続くオプションの一連の http-method 要素が含まれます。url-pattern 要素の値は、要求が保護されたコンテンツへのアクセス試行に対応するために要求 URL が一致する必要がある URL パターンを指定します。http-method 要素の値は、許可する HTTP 要求のタイプを指定します。

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

Web アプリケーションの /restricted パスの下にある URL には、AuthorizedUser ロールが必要です。

于 2013-02-27T09:34:48.703 に答える
-2

解決策は、コンテナー ベースのセキュリティの代わりに、Apache Shiroなどの代替セキュリティ フレームワークを使用することです。その後、保護されたコンテンツからリソースを簡単に除外できます。Shiro を使用すると、次のようになりますWEB-INF/shiro.ini

[urls]
/info = anon
/**   = authc
于 2013-02-25T16:48:14.580 に答える