簡體   English   中英

使用 spring-security SPNEGO 時如何使用多個 SPN

[英]How to use multiple SPNs when using spring-security SPNEGO

我使用 spring-security 3.0.2.RELEASE 和 spring-security-kerberos-core 1.0.0.M2 來實現基於 SPNEGO 的身份驗證。

服務器有多個有效的 DNS 名稱。 一個是指機器本身(machine.domain),另一個是指應用程序(app.domain)。 目前沒有設置反向代理。

我需要確保 SPNEGO 適用於兩個有效的 DNS 名稱。 事實上,我已將機器名稱設置為 SPN。 如果我使用 IE7 連接到應用程序,它可以連接到機器名稱,而不是應用程序名稱 (HTTP 401)。

我正在使用 SunJaasKerberosTicketValidator 來驗證票證,但它一次只允許配置一個 SPN。

如何配置我的應用程序以使用多個 SPN? 是否只需要使用 setspn 將 SPN 添加到列表中? 還是我需要設置多個票證驗證器?

我的問題與這個問題非常相似(沒有回答): http : //forum.spring.io/forum/spring-projects/security/122250-spring-security-3-kerberos-spn

非常感謝,

詹姆斯

只是一個快速的想法:

您可以定義兩個SunJaasKerberosTicketValidator實例,每個實例用於其域,然后實現您自己的KerberosTicketValidator ,它將根據 HTTP 請求委托給底層 JAAS 驗證器。

如果您使用RequestContextListener則可以從驗證器獲取RequestContextListener

HttpServletRequest request = (HttpServletRequest) ((ServletWebRequest) 
        RequestContextHolder.currentRequestAttributes()).getNativeRequest();

Pavel 是對的,以防萬一 ClassCastException 嘗試:

RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest()

暫無
暫無

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

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