問題タブ [waffle]
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.
kerberos - SSPI は、同じパスワードを持つアカウントを予期せず認証します
RMI とリモートで通信する Java クライアントとサーバー (Win7 ホスト上) を作成しました。クライアント ユーザーが資格情報を提供する必要なく (つまり、シングル サインオン)、サーバーがクライアント ユーザーを認証するようにします。Window のSSPIを利用するために、 Waffleライブラリを使用しています。
- サーバーは、サービス アカウントdev\svc_serviceaccountを使用してhost1.dev.mydomain.comで実行されています
- dev\svc_serviceaccountの SPN、test/host1.dev.mydomain.comを追加しました
- クライアントは、host2.dev.mydomain.comでdev\testuserとして実行されており、上記の SPN を使用するように構成されています
- クライアントとサーバーの両方が Kerberos (ネゴシエートではない) SSPI プロバイダーを使用するように構成されている
すべてが期待どおりに機能し、サーバーはクライアントを正常に認証し、Wireshark を使用して、クライアントとドメイン コントローラーの間で Kerberos パケットが送信されていることを確認できます。
次に、サーバーを別のサービス アカウント ( dev\svc_serviceaccount2 ) として実行するように変更します。このサービス アカウントの SPN はありません。クライアントは引き続き実行され、元の SPN で構成されます。予想どおり、サーバーはクライアントの認証に失敗するようになりました。
最後に、dev\serviceaccount2 のパスワードをdev\serviceaccount1と同じになるように変更し、上記の失敗のシナリオに従って実行します。ただし、サーバーはクライアントを正常に認証します!!
秘密鍵はパスワード ハッシュから派生していると思いますが、これにはまだ驚かされます。これがSSPIの期待される機能であるかどうかを誰でも確認できますか? コード (またはワッフル) に問題があるかどうかを判断しようとしています。それとも、環境要因がこれを引き起こしているのでしょうか? どんな助け/説明も大歓迎です。
java - Waffle SSPI SPNEGO 相互フラグの設定方法
この問題を解決しようとしているときに、GSSAPI と SSPI クライアントの実装からの SPNEGO 要求 (KRB_AP_REQ) の違いに気付きました。
GSSPI を使用して、mutalFlag を False に設定します。
SSPI を使用すると、相互フラグが True に設定されます。
GSSAPI を呼び出す Java コードでは、必要に応じてフラグを明示的に true または false に設定できますが、Waffle / SSPI を使用してこれを行う方法が見つかりませんでした。
Github で Waffle コードを「mutual」で検索すると、ヒットは 1 つだけでした。ISC_REQ_MUTUAL_AUTH
Waffle/SSPI経由で相互フラグを明示的に設定する方法はありますか?
つまり、以下の GSSAPI コードに相当するもの: