私はLinuxとWindowsの両方のサーバーでいくつかの環境を持っています。認証はKerberosによって処理されます。私は、プログラムを実行しているログインユーザが行ったHTTPリクエストを自動的に認証するいくつかのJAVAコードを作りたいと思っています。私はこのコードを持っている場合たとえばLinuxでJavaランニングのJavaからKERBEROSでhttp要求を確認する
は、:
CloseableHttpClient winHttpclient = WinHttpClients.createDefault();
HttpGet httpget = new HttpGet("http://mykerberos/endpoint");
winHttpclient.execute(httpget).getEntity();
私は窓からそれを実行すると、それは箱から出して動作します。私はhttp://mykerberos/endpointと同定され、応答を得る。
今、私はLinuxサーバーから同じことをしたいと思います。 https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/lab/part6.html#Proxy_Authenticationのような提案をいくつか見つけましたが、それは自分の資格情報が必要なため、私が探しているものではありません.Windowsから渡す必要はありません。
誰かがこれをどのように達成できるか知っていますか?
ご協力いただきありがとうございます。
あなたのWindows資格情報は、Active Directoryサーバーによって許可されたKerberosチケットです(おそらく)。 Webサーバーも認証用にADを使用しています(それはSPNegoプロトコルが使用されていることです)。しかし、Linuxの資格情報は何ですか?ローカルLinuxアカウント、またはWindowsで使用しているのと同じADアカウント(SSSDやCentrifyなどのバインドを使用)に対してログインしているDidi? –
こんにちは、お返事ありがとうございます。あなたが正しいです、私たちがウィンドウにログインすると、ケルベロスチケットを取得します。そして、Webサーバーは認証のために私たちのADサーバーを使用しています。認証はSPNegoプロトコルを使用して行われます。 Linuxでは同じアカウントを使用します。私はどのツールがADにバインドするために使用されているのかわかりません。私はチェックし、Linuxホストにログインすると、_klist_は私にチケットを返します。 –
Kerberosチケットキャッシュに有効なTGTがある場合、適切なHTTPクライアント(つまりSPNegoをサポートする)が接続できる必要があります。 '--negotiate -u:'で 'curl'コマンドラインユーティリティを含める –