WindowsでJavaを使用してクライアント側のHTTPSPNEGO認証を行うには、Windowsレジストリキーallowtgtsessionkeyを設定する必要があります。これは十分に文書化されています。私が理解していないのは、人々がこれをどのように回避するかです。ほとんどの企業サイトは、単一のソフトウェアのためにWindowsでこのレジストリキーを変更することを決して受け入れません。また、組織内のすべてのワークステーションでこれを変更する必要がある場合は、面倒なことも考えてください。しかし、これまでのところ、このレジストリキーを変更するようにお客様を説得することができなかったため、これは単なる理論です。
私は彼らを責めません。ほとんどの企業管理者は、これがセキュリティを緩和すると考えているため、反対します。
私はこれを読みました: ネイティブSSPI APIを使用してサービスのKerberosチケットを取得する方法はJavaまたはコマンドラインユーティリティにありますか?
でも今はかなり古いです。
ですから、大学の環境やホームユーザーなど以外で、Windows+Javaクライアント+Kerberosをどのように機能させることができるのか本当によくわかりません。
企業の管理者からの質問は、「IEやFirefoxなどのアプリケーションでこのキーを設定せずにSPNEGOを実行しても問題がないのに、なぜこのレジストリキーを設定する必要があるのですか?」です。まあ、私は答えが何であるかを知っています。これは、(ほとんどの場合)IEやFirefoxなどのアプリケーションがWindowsネイティブGSS API(SSPI)に基づいているのに対し、SunのJavaは独自の実装を使用しているためです。
WAFFLEのようなものを使用すれば問題は解決すると思いますが、純粋なJavaソリューションを好みます。また、SpringセキュリティやApache HttpClientなどのJavaベースのソリューションを使用しても、これらすべてがこの問題に悩まされるため、役に立たないと思います。
ヘルプやポインタをいただければ幸いです。
UPDATE1:
OracleのバグデータベースにこのためのRFEがあることがわかりました。オラクルの従業員によってこの問題について提出されたパッチと、この機能に関するJDKメーリングリストでの議論もあります。これが現在のJava7で利用できないことを理解できる限り、実験的でさえない限り、私はそれほど賢くなりません。右?
UPDATE2:
質問は、OpenJDKSecurityDevメーリングリストで再び生きています。