2016-10-25 18 views
0

Я столкнулся с проблемами при попытке доступа к аутентифицированному ресурсу Kerberos SPNEGO с использованием Spring Rest Client. Я использую KerberosRestTemplate.Как получить доступ к аутентифицированному ресурсу Kerberos SPNEGO с использованием шаблона весеннего отдыха

Из документов «Оставьте 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

Попробуйте эти spring-security-kerberos. Я думаю, что вам не хватает базовой конфигурации, которая может быть достигнута либо с помощью конфигурации xml, либо java.

Может попробовать следующие варианты:

  1. Используйте LoginOptions, если вы хотите, чтобы настроить параметры Krb5LoginModule.
  2. Используйте настроенный httpClient.
+0

согласно документации Документах «Leave keyTabLocation и UserPrincipal пустым, если вы хотите использовать кэшированные билет". Какой вариант входа в систему я должен настроить? –

0

Просто вызовите конструктор с нулем для keyTabLocation и любой непустой строки для UserPrincipal, как это:

KerberosRestTemplate restTemplate = new KerberosRestTemplate(null,"-");