SPNを設定して、Tomcat kerberos spnegoシングルサインオン用のキータブファイルを作成しようとしています。
tomcat7を実行しているサーバーはubuntu-ad1.wad.eng.hytrst.com、KDCはkerberos.wad.eng.hytrust.com、ドメインはWAD.ENG.HYTRUST.COMです。広告ユーザー名は[email protected]です。 .HYTRUST.COM machieneのADアカウントは[email protected]です。
最初に、ユーザー名に関連付けるためのspnを作成します(これを行う必要がある理由についての説明が必要ですか?):
setspn HTTP/ubuntu-ad.wad.eng.hytrust.com [email protected]
次に、キータブを作成してWebサーバーにコピーします。
ktpass /out Tomcat.keytab /mapuser [email protected] /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL
次に、それをWebサーバーにコピーし、ktutil
を使用して/etc/krb5.keytabとマージします。
これをkinitでテストしようとすると、キーテーブルから正常に読み取ることができません。
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit -k -t /home/hytrust/Tomcat.keytab http/[email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit -k -t /home/hytrust/Tomcat.keytab HTTP/[email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit -k -t /home/hytrust/Tomcat.keytab [email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit -k -t /home/hytrust/Tomcat.keytab ubuntu-ad1.wad.eng.hytrust.com
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit -k -t /home/hytrust/Tomcat.keytab [email protected]
kinit: Key table entry not found while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit -k -t /home/hytrust/Tomcat.keytab [email protected]
kinit: Client not found in Kerberos database while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit [email protected] for [email protected]:
kinit: Preauthentication failed while getting initial credentials
hytrust@ubuntu-ad1:/usr/share/Tomcat7/conf$ Sudo kinit [email protected]
[email protected]のパスワード:hytrust @ ubuntu-ad1:/ usr/share/Tomcat7/conf $
「Kerberosデータベースで見つからないクライアント」と「Kerberosデータベースで見つからないクライアント」との違いは何ですか?これらのエラーは実際にはどういう意味ですか?
(この質問は少し古いですが、私の分析は他の人を助けるかもしれません)
理解が不足しているため、コマンドを正しく実行していないようです。私はあなたのKDCが実際にはActive Directory KDCであると想定しています。これはあなたの説明から完全に明確ではありません。
まず、Active Directoryケルベロスでは(標準のMIT /ハイムダルケルベロスとは異なり)サービスプリンシパル名(SPN-マシンを実行するサービス)をユーザープリンシパル名(UPN、マシンの後ろに座っているユーザー)に接続する必要があります。したがって、マッピング。
setspnは、ユーザーのcnにldap属性を追加して、サービスプリンシパル名をユーザーに追加します。
ktpassはキータブを出力しますand UserPrincipalNameをusername/fully.qualified.domainname@REALMに書き換えます。
kinit -k -t key.tab principal
両方のkey.tabファイルでルックアップが行われますandプリンシパルのActive Directory UPN。キータブでプリンシパルが見つからない場合、「初期認証情報の取得中にキーテーブルエントリが見つかりません」などのエラーが発生します。ディレクトリで見つからない場合は、「初期認証情報の取得中にKerberosデータベースでクライアントが見つかりません」と表示されます。
さて、あなたの問題を手元に。 ktpassの/ princパラメータがないようです。これは、実際にキータブファイルでプリンシパルを取得し、マッピングを正しく行うために必要です。 klist -k keytab
与えます。
したがって、行は次のようになります(REALMを適切な場所に配置することを含む:
setspn HTTP/ubuntu-ad.wad.eng.hytrust.com aulfeldt
ktpass /princ HTTP/[email protected] /out Tomcat.keytab /mapuser aulfeldt /crypto ALL /pass * /ptype KRB5_NT_PRINCIPAL
Extra:samba-toolでSAMBA 4を使用してこれを行う場合は、userPrincipalNameを手動で(この場合は)HTTP/[email protected]に変更する必要があります。これは、sambaのキータブ生成ではUPNが更新されないため、ルックアップを実行するとエラーが発生するためです。
余談ですが、Active Directoryのマシン名はCOMPUTER $($をマーク)です。あなたのはオフのようです。
Windowsで「setspn -Q」を使用して、SPNが適切に作成されているかどうかを確認します。
C:\Windows\System32>setspn -Q HTTP/util01.example.com
CN=util01,OU=Servers,DC=example,DC=com
HTTP/util01.example.com
Existing SPN found!
次に、keytabファイルをチェックして、それが一致するかどうかを確認します。
[Apache@util01 ~]$ klist -e -k /etc/httpd/conf/auth_httpd.keytab
Keytab name: FILE:/etc/httpd/conf/auth_httpd.keytab
KVNO Principal
---- --------------------------------------------------------------------------
3 HTTP/[email protected] (DES cbc mode with RSA-MD5)
(@ EXAMPLE.COMレルムビットを除いて)一致しない場合は、ktpassを使用してキータブを再エクスポートすることで一致するように修正します。
それらが一致する場合、keytabで指定されたSPNのチケットを取得できるはずです(レルムは含めないでください)。
$ Sudo kinit -k keytab.file HTTP/util01.example.com