簡體   English   中英

如何使用Spring Rest模板訪問經過kerberos SPNEGO認證的資源

[英]How to access kerberos SPNEGO authenticated resource using spring rest template

嘗試使用Spring Rest客戶端訪問經過kerberos SPNEGO認證的資源時遇到問題。 我正在使用KerberosRestTemplate

來自文檔

如果要使用緩存的票證,請將keyTabLocationuserPrincipal保留keyTabLocation空。

但是當我嘗試調用無參數構造函數時

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)

我在這里做錯了什么?

請嘗試使用這些spring-security-kerberos 我認為您缺少基本配置,可以通過xml或基於Java的配置來實現。

也可以嘗試以下選項:

  1. 如果要自定義Krb5LoginModule選項,請使用loginOptions。
  2. 使用自定義的httpClient。

只需使用keyTabLocation的null以及userPrincipal的任何非空字符串調用構造函數,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM