問題タブ [jgss]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spnego - SPNEGO Tomcat 7 を使用して SSO を構成する際の java.security.PrivilegedActionException
SPNEGO for Tomcat 7 と IBM JDK を使用して SSO を機能させようとしています。com.sun.security.jgss.krb5.accept を呼び出す認証に「org.apache.catalina.authenticator.SpnegoAuthenticator」を使用しています。そのための構成は
Java 6 (SR9)、7 (SR1、SR5) で試しましたが、常に以下のエラーでスタックします。
誰かが私が見逃したものを指摘できますか?
-ありがとう
java - Java GSS+JAAS を使用して更新可能な kerberos チケットを取得する方法
jTDS を使用して SQLServer に接続しています。内部的に、jTDS は GSS を使用して kerberos のサービス チケットを取得し、安全なコンテキストを確立します。私のアプリは長期間存続し、接続は常に維持されているため、SQL サーバーが独自にそれらを更新できるようにするには、kerberos のサービス チケットを更新可能にする必要があります (kdc ポリシーは、12 時間後にすべてのチケットを期限切れにするように設定されています)。 )。
jTDS が kerberos トークンを取得するために行うことは、(多かれ少なかれ) 次のとおりです。
私が疑っているのは、私が取得しているチケットは更新できないということです。次のようなことをして確認しています。
特定の構成では、GSS は JAAS ログイン モジュールから kerberos TGT を取得しています。次の変数を false-Djavax.security.auth.useSubjectCredsOnly=false
に設定し、login.cfg ファイルで次のログイン モジュールを構成します。
もう 1 つ気づいたことは、 のgetLifetime()
方法がGSSContext
機能していないように見えることです。チケットの実際の有効期間に関係なく、常に 2147483647 (最大 int) を返します。
jTDS ドライバーの分岐に慣れているので、必要に応じて GSS コンテキストを確立する方法を変更できます。
私が試したこと:
GSS API のネイティブ実装を使用します。
これは、更新可能なチケットを取得するという点ではうまく機能しますが、別の問題が発生します (チケットキャッシュが適切に設定され、そこにあるチケットが適切に更新されることを保証するという点で)。このオプションをバイパスできれば、それはいいことです。ここで私が観察したことは、getLifetime()
メソッドが実際にチケットの実際の有効期間を秒単位で返すことです。
KerberosLoginModule の再実装:
この質問Jaas - Requesting Renewable Kerberos Ticketsへの回答に基づいて、LoginModule を再実装して、TGT を要求する前にKDCOption
RENEWを設定しました。KrbAsReqBuilder
これは、更新可能な TGT を取得するという意味では問題なく機能しますが、GSS がその TGT から取得したチケットはまだ更新できません。KDCOption オブジェクトのコンストラクターにブレークポイントを設定し、要求ごとに手動で RENEW フラグを設定すると ( KrbTgsReq
GSS によって行われた場合でも) 動作しますが、その変更を生産的にするには、GSS を大幅に書き直す必要があり、快適ではありません。
java - Kerberos と LDAP: Java 6 が Kerberos の使用時に LDAP ホスト名を切り捨てるのはなぜですか?
私の仕事は、Java GSS API を介して Kerberos 化された LDAP サーバーに接続することです。LDAP サーバーに接続してデータを取得できることを確認するために、接続、Kerberos 構成、接続パラメーターなどをテストするために使用する小さなサンプル アプリがあります。このためのコードを以下に示します。
testkerberized.properties ファイル内で、「ldapHost」プロパティは「ldap://dv2k8ad.2k8.hlp.net:389/dc=2k8,dc=hlp,dc=net」と定義されています。
今、このアプリを Java 7 で実行すると、魅力的に動作します。Kerberos 認証が成功し、データが LDAP サーバーから正常に取得されます。ただし、Java 6 で実行することはできません。次の例外が発生し続けます。
module.commit() が成功し、サブジェクトが正常に取得されたことは注目に値するため、問題はありません。しかし、KrbError メッセージの sname フィールドがオフになっていることに気付きました。ldap/2k8.hlp.net と表示されていますが、ldap/dv2k8ad.2k8.hlp.net である必要があります。
これに続いて、Wireshark セッションを実行して、送信されるすべての Kerberos パケットをキャプチャし、Java 6 と Java 7 の両方で TestKerberizedLdap を実行しながらパケットをキャプチャしました。どちらの場合もプログラムが AS-REP に成功したため、TGT が正常に取得されました。 . ただし、KDC に送信される TGS-REQ の値は異なります。Java 6 によって送信されたサーバー名は ldap/2k8.hlp.net であり、Java 7 によって送信されたサーバー名は ldap/dv2k8ad.2k8.hlp.net でした。
Java 6 が LDAP ホスト名の削除を選択する理由がわかりません。誰かが回避策または修正 (Java の更新を除く) を知っていれば、どんな助けにも本当に感謝しています。
java - Java GSS/JDBC の問題
解決しようとしているちょっと変わった問題があります。Macで開発しています。jdbc を使用してデータベースに接続するコードを書いています。私は db サーバーに直接アクセスできません。アクセスするには、ssh でポート転送を設定する必要があります。これは、db サーバーが存在するネットワーク内のプロキシ サーバーに接続されます。私がプロキシするサーバーは Linux サーバーであり、データベースは Windows 上の MS Sql サーバーです。ポート転送を設定したら、SquirrelSQL などの DB ブラウジング ツールを使用してデータベースに接続できます。まったく同じ JDBC ドライバーを使用して、作成した jdbc コードを使用してデータベースに接続しようとすると、次のようになります。
Google での調査によると、これは Kerberos の問題である可能性があり、これまで対処する必要はありませんでしたが、それが正しいかどうかはわかりません。アプリケーションで複製する必要があるdbブラウザは何をしていますか?
ティア、アレックス
java - Kerberos エラー: GSSHeader が正しいタグを見つけられませんでした
SOAP サービス wsdl URL への Kerberos 認証接続を確立しようとしています。接続を正常に確立し、サービスを呼び出すことができます。サーバーを起動した後、少なくとも 1 回はサービス呼び出しを成功させることができます。ただし、いくつかのリクエスト (1 つ以上) の後、突然無効なトークン エラーが発生します。エラーが発生すると、それ以降の呼び出しは機能せず、エラーが続きます。
サーバーを再起動すると、サービス呼び出しが少なくとも 1 回は機能します。そして、上記のサイクルが続きます。
以前は機能していたのに、突然トークンが無効になる理由がわかりません。サーバーを再起動すると、トークンが再び有効になります。
エラースタックトレースは次のとおりです。
kerberos - MIT Kerberos ツールにより、JAAS は Windows LSA にアクセスできるようになりますか? ツールなしでそれを行う方法
JAAS を使用して Java アプリを実行すると、驚くべき結果が得
られました。MIT Kerberos ツール 'kfw-4.0.1-i386.msi' をインストールするまで、Java クライアント アプリケーションは Windows LSA にアクセスできませんでした。
JAAS conf ファイルの設定:
Windows 7 で Java 1.8 を実行しています
-Dsun.security.krb5.debug=true を使用してログを取得しました
左は MIT ツールをインストールせずに失敗、
右は MIT ツールをインストールして成功
レジストリ キー
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
値の名前: allowtgtsessionkeyを 0 と 1 に設定しようとしましたが、MIT ツールのアンインストール中に何も変更されませんでした。
MIT ツールをインストールせずに LSA にアクセスできるかどうか教えてもらえますか? または、JAAS が Windows LSA とどのように対話しているかについての情報を教えてください。
tomcat7 - Spnego Kerberos 認証により、Windows 7 ユーザーに「要求はリプレイ (34)」エラーが発生する
Tomcat 7 webapp で Spnego 認証をセットアップしました。Ubuntu 14.04 および Windows 10 ユーザーには問題なく動作します。ただし、Chrome/Firefox/IE を使用しているすべてのユーザーには、次のエラーが表示されます。
GSSException: Failure unspecified at GSS-API level (Mechanism level: Request is a replay (34))
この根本的な原因を特定できません。この問題は Windows 7 ユーザーに固有のものであるため、どうすればデバッグできますか?