[英]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.