0

Wildfly 8.1.0.Final の使用

/api/* へのアクセスに基本認証を必要とする Web アプリを作成したいのですが、アプリケーションの残りの部分は開いておく必要があります。これを達成するために、次の web.xml があります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Api access</web-resource-name>
            <url-pattern>/api/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>api</role-name>
        </auth-constraint>
    </security-constraint>

    <security-role>
        <role-name>api</role-name>
    </security-role>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Authentication requires api access</realm-name>
    </login-config>
</web-app>

ブラウザでテストすると、これは期待どおりに機能します。

http://localhost:8080/myapp/api

...認証が必要です。

http://localhost:8080/myapp 

...認証を必要としません。

ここにトリッキーな部分があります:

サード パーティが /myapp にアクセスし、リクエストに認証ヘッダーを含めます。

Authorization: Basic ZGlsbDpkYWxs

これは wildfly に登録されたユーザーではありませんが、/myapp が開いており、承認を必要としないため、問題にはなりません。ただし、何が起こるかは次のとおりです。

401 Unauthorized

なんで?/myapp にセキュリティ制約を使用するように undertow に指示していませんが、/myapp/api に登録したセキュリティ制約がデフォルトになります。

Jboss AS 7.1.1.Final では発生しなかったため、これは undertow で導入された新しい動作です。

リクエストに承認が含まれている場合、オープン リソースに承認を使用しないように undertow に指示するにはどうすればよいですか?

4

1 に答える 1