Translated message

A translation of this page exists in English.

EJB over HTTP を使用して EJB クライアントからアクセスすると、accless.log に HTTP 401 Unauthorized が出力される

Solution Verified - Updated -

Environment

Red Hat JBoss Enterprise Application Platform (EAP)

  • 7.3
  • 7.4

Issue

EJB over HTTP を使用して EJB クライアントからアクセスした場合、accless.log に HTTP 401 Unauthorized が 1 回だけ出力されます。

10.0.2.2 - - [15/Aug/2022:20:47:30 +0900] "POST /wildfly-services/ejb/v1/invoke/-/ejb-remote-server-side/-/CalculatorBean/-/org.jboss.as.quickstarts.ejb.remote.stateless.RemoteCalculator/add/int/int HTTP/2.0" 401 77
        ...

Resolution

これは予想される動作です。HTTP 401 Unauthorized は、EJB 認証プロセスが原因で発生し、接続がキャッシュされて再利用されるため、一度だけ発生します。

Root Cause

jboss-eap-quickstarts に含まれる ejb-remote アプリケーションを使用して問題を再現できます。

  1. ユーザーを追加し、EJB アプリケーションを JBoss EAP サーバーにデプロイします。

    $JBOSS_HOME/bin/add-user.sh -a -u 'quickstartUser' -p 'quickstartPwd1!'
    cd jboss-eap-quickstarts/ejb-remote
    mvn clean install wildfly:deploy
    
  2. EJB クライアントモジュールを生成して実行します。

    cd jboss-eap-quickstarts/ejb-remote/client
    mvn package assembly:single
    mvn -Dhttp=true exec:exec
    

EJB over HTTP は、EJB クライアントの実行時にオプション -Dhttp=true を追加することによって使用されます。

Request Dumping Handler を有効にして server.log を確認すると、最初の HTTP 401 Unauthorized 応答が DIGEST 認証の WWW-Authenticate ヘッダーを返すことがわかります。
以下の例では、"AAAABAAAAvX+AhA1VniUOnq2tr6ubcslmZeNzJ4lwahDCP8yF/Az2hDrfN8=" がダイジェスト情報になります。

Digest realm="ApplicationRealm", nonce="AAAABAAAAvX+AhA1VniUOnq2tr6ubcslmZeNzJ4lwahDCP8yF/Az2hDrfN8=", opaque="00000000000000000000000000000000", algorithm=MD5, qop=auth

次に、2 回目以降のリクエストでは、EJB クライアントはユーザー名とダイジェスト情報を含む Authorization ヘッダーを送信します。

Digest username="quickstartUser", uri="http://localhost:8080/wildfly-services/ejb/v1/invoke/-/ejb-remote-server-side/-/CalculatorBean/-/org.jboss.as.quickstarts.ejb.remote.stateless.RemoteCalculator/add/int/int", realm="ApplicationRealm", nc=00000001, cnonce="KlqoBoaqYswb2uiVaRcWBkupjurkIF45vpTh-KJw", algorithm=MD5, nonce="AAAABAAAAvX+AhA1VniUOnq2tr6ubcslmZeNzJ4lwahDCP8yF/Az2hDrfN8=", opaque="00000000000000000000000000000000", qop=auth, response="1eb1faa16b0ed1aaf576508396e0bfe3"

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments