0

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.comdev\testuserとして実行されており、上記の SPN を使用するように構成されています
  • クライアントとサーバーの両方が Kerberos (ネゴシエートではない) SSPI プロバイダーを使用するように構成されている

すべてが期待どおりに機能し、サーバーはクライアントを正常に認証し、Wireshark を使用して、クライアントとドメイン コントローラーの間で Kerberos パケットが送信されていることを確認できます。

次に、サーバーを別のサービス アカウント ( dev\svc_serviceaccount2 ) として実行するように変更します。このサービス アカウントの SPN はありません。クライアントは引き続き実行され、元の SPN で構成されます。予想どおり、サーバーはクライアントの認証に失敗するようになりました。

最後に、dev\serviceaccount2 のパスワードをdev\serviceaccount1同じになるように変更し、上記の失敗のシナリオに従って実行します。ただし、サーバーはクライアントを正常に認証します!!

秘密鍵はパスワード ハッシュから派生していると思いますが、これにはまだ驚かされます。これがSSPIの期待される機能であるかどうかを誰でも確認できますか? コード (またはワッフル) に問題があるかどうかを判断しようとしています。それとも、環境要因がこれを引き起こしているのでしょうか? どんな助け/説明も大歓迎です。

4

0 に答える 0