EJB over HTTP を使用して EJB クライアントからアクセスすると、accless.log に HTTP 401 Unauthorized が出力される
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 アプリケーションを使用して問題を再現できます。
-
ユーザーを追加し、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
-
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