春のセキュリティ kerberos 認証の統合テストを実装したいと考えています。この目的のためにKerberosRestTemplate (参照)があります。KerberosRestTemplateには、「キャッシュされたチケットを使用する場合は、keyTabLocation と userPrincipal を空のままにしてください」という説明を持つデフォルトのコンストラクターがあります。
研究のために、私は簡単なクラスを書きました:
public static void main(String[] args) {
KerberosRestTemplate krt = new KerberosRestTemplate();
String result = krt.getForObject("http://testserver.testad.local:8080/", String.class);
System.out.println(result);
}
実行すると、例外がスローされました:
Exception in thread "main" org.springframework.web.client.RestClientException: Error running rest call; nested exception is java.lang.IllegalArgumentException: Null name not allowed
at org.springframework.security.kerberos.client.KerberosRestTemplate.doExecute(KerberosRestT
emplate.java:196)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:530)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:237)
at edu.mezlogo.Application.main(Application.java:9)
Caused by: java.lang.IllegalArgumentException: Null name not allowed
at sun.security.krb5.PrincipalName.<init>(Unknown Source)
at sun.security.krb5.PrincipalName.<init>(Unknown Source)
at javax.security.auth.kerberos.KerberosPrincipal.<init>(Unknown Source)
at javax.security.auth.kerberos.KerberosPrincipal.<init>(Unknown Source)
at org.springframework.security.kerberos.client.KerberosRestTemplate.doExecute(KerberosRestT
emplate.java:182)
... 3 more
私のklistには、私のサービスの正しいキャッシュされたチケットが含まれています。
#2> Client: deniz @ TESTAD.LOCAL
Server: HTTP/testserver.testad.local @ TESTAD.LOCAL
KerbTicket Encryption Type: RSADSI RC4-HMAC(NT)
Ticket Flags 0x40a10000 -> forwardable renewable pre_authent name_canonicalize
Start Time: 2/5/2016 6:17:39 (local)
End Time: 2/5/2016 16:16:32 (local)
Renew Time: 2/12/2016 6:16:32 (local)
Session Key Type: RSADSI RC4-HMAC(NT)
そして、私のブラウザ (firefox) は kerberos sso で認証に成功しました。
私はWindowsサーバー2012を使用しています。クライアントとしてWindows 7を使用しています。
キャッシュされたチケットの使用方法 (そして、ktpass はクライアントのキータブを生成できますか?)
Ps私の英語でごめんなさい。