1

HTTP DIGEST 認証で Glassfish 3.1.2 を怒って使用した人はいますか?

正常に動作するようになった、またはそう思った...その動作が不安定であることが判明するまで...おそらく10回のうち9回は動作しますが、10回目は認証に失敗します。

これは、同じ資格情報と同じ Java EE アプリケーションを持つ同じマシン上のクライアントとして wget でテストしたときです (たまたま、REST Web サービスですが、他のアプリケーションにも問題があります)。wget を実行しました。ローカル。

私の Glassfish マシンはこれらの wget リクエストのみを処理しており、それ以外のことはほとんど行っていません!

wget がときどき誤動作していると信じる理由はありません。念のため、リクエスト ダイジェストが失敗したときに (wget HTTP デバッグから) 手動でリクエスト ダイジェストを計算しました。大丈夫そうでした。

デバッグで wget を実行すると、最初は認証情報なしで失敗し、次に認証情報で成功することがわかります。ただし、10 回に 1 回程度で、2 回目も失敗します (デバッグはここに示されています)。

[writing POST file request.xml ... done]
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 401 Unauthorized
X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 
3.1.2 Java/Sun    Microsystems Inc./1.6)
Server: GlassFish Server Open Source Edition 3.1.2
WWW-Authenticate: Digest realm="jdbc-realm",qop="auth",nonce="1377101691098:d07adb4a1421a265f3aa36bd99df7f6ef8c7a6e7887eb7d876e6b5ce079d1126",
opaque="C26EED99B0A8C0BCA16900215CCD241F"
Content-Type: text/html
Content-Length: 1069
Date: Wed, 21 Aug 2013 16:14:50 GMT
---response end---
401 Unauthorized
Skipping 1069 bytes of body: [<!DOCTYPE html P...

javax.enterprise.system.core.security.level=FINE のデバッグを設定しました

エラーメッセージは表示されませんでした...しかし、「良い」wgetの場合、「hasResourcePermission」が3回呼び出され、2回がfalseを返し、1回がtrueを返すことに気付きました。

ただし、「悪い」wget呼び出しの場合、falseを返すのは2回だけです。

|FINE|glassfish3.1.2|javax.enterprise.system.core.security|_ThreadID=36;_ThreadName=Thread->2; ClassName=com.sun.enterprise.security.web.integration.WebSecurityManager; MethodName=hasResourcePermission;|[Web セキュリティ] hasResource isGranted: false|#]

|FINE|glassfish3.1.2|javax.enterprise.system.core.security|_ThreadID=36;_ThreadName=Thread- 2;ClassName=com.sun.enterprise.security.web.integration.WebSecurityManager; MethodName=hasResourcePermission;|[Web セキュリティ] hasResource isGranted: false|#]

良いケースのみ

|FINE|glassfish3.1.2|javax.enterprise.system.core.security|_ThreadID=36;_ThreadName=Thread- 2;ClassName=com.sun.enterprise.security.web.integration.WebSecurityManager; MethodName=hasResourcePermission;|[Web セキュリティ] hasResource isGranted: true|#]

アイデアはありますか?有効にできるデバッグは他にありますか?

ありがとう

** * ** * ** * ** * ** * *** GLASSFISH ダイジェストの説明* ** * ****

 Install a mysql database with yum. 

Follow these instructions (with some changes, this blog is for FORM authentication so stop at step 4)

http://jugojava.blogspot.ie/2011/02/jdbc-security-realm-with-glassfish-and.html

Create the mysql database "realm_db" with the tables in the above blog

Using the Glassfish console UI, I created a JDBC Connection Pool and JDBC Resource for mysql database.

In the Pool Additional Properties, add in your mysql database properties as shown in the blog

On the server-config, Security page, I set "Default Realm" to jdbc-realm

IMPORTANT: When creating the JDBC security realm, use JAAS context of "jdbcDigestRealm" and  JNDI of "jdbc/realm_db". 

I left these fields blank, Digest Algorithm, Encoding, Charset, Password, Encryption Algormithm etc. and I put the passwords in the mysql database in clear text.

By the way, I used an up-to-date version of wget for testing because I read somewhere that older versions don't have proper RFC2617 DIGEST support. The version is 1.14 from Aug 12.
you need a driver file in $GLASSFISH_HOME/domains/domain1/lib. The file is called mysql-connector-java-3.1.13-bin.jar
4

0 に答える 0