我在尝试使用Spring rest客户端访问kerberos SPNEGO经过身份验证的资源时遇到了问题。我正在使用KerberosRestTemplate
。
来自文档
如果要使用缓存票证,请将
keyTabLocation
和userPrincipal
留空。
但是当我尝试调用无参数构造函数
时this.kerberosRestTemplate = new KerberosRestTemplate();
尝试访问受保护的受保护资源,但出现以下错误:
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(KerberosRestTemplate.java:196)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:538)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:245)
Caused by: java.lang.IllegalArgumentException: Null name not allowed
at sun.security.krb5.PrincipalName.<init>(PrincipalName.java:356) ~[?:1.7.0_67]
at javax.security.auth.kerberos.KerberosPrincipal.<init>(KerberosPrincipal.java:123) ~[?:1.7.0_67]
at org.springframework.security.kerberos.client.KerberosRestTemplate.doExecute(KerberosRestTemplate.java:182)
我在这里做错了什么?
答案 0 :(得分:0)
请尝试这些spring-security-kerberos。我认为你缺少可以通过基于xml或java配置实现的基本配置。
还可以尝试以下选项:
答案 1 :(得分:-1)
只需为keyTabLocation调用构造函数为null,为userPrincipal调用任何非空字符串,如下所示:
KerberosRestTemplate restTemplate = new KerberosRestTemplate(null,"-");