2015-02-24 65 views
1

我正在使用充當服務器並使用GSSAPI進行Kerberos身份驗證的應用程序。如何在使用由客戶端發送的令牌接受安全上下文之前獲取用戶名?

應用工作
在啓動應用程序時,以往客戶端發送協商就收購憑證
:令牌
使用的gss_accept_sec_context
來電顯示名稱來獲取用戶名像MYNAME @ DOMAIN

目前接受上下文應用程序正在爲每個會話執行身份驗證。

SSO身份驗證與緩存

,但我想修改,以一次爲第一屆執行身份驗證和緩存東西重新使用東西認證用戶的應用程序。 這裏我不能緩存用戶名(MyName @ DOMAIN),因爲要再次獲取用戶名應用程序,請接受上下文並調用顯示名稱。

有沒有辦法通過緩存執行SSO身份驗證?

回答

1

發送具有通過現有安全上下文驗證完整性的消息的能力是對高速緩存的憑據建立的訪問。在每個新消息成功解包的情況下,通過使用gss_inquire_context()解開它的上下文關聯數據源是很好的。

如果客戶端既沒有請求新的上下文,也沒有發送與現有上下文無法配對的消息,那麼沒有收到完整的消息,因此服務器應該忽略客戶端。 (但是,如果底層機制和配置支持委派,服務器可以代表客戶端使用緩存憑據進行持續任務。)

組織通道和安全上下文之間關係查找的標準不是GSS的一部分;它只提供了一種可選方法來驗證通道匹配情況,以防更改與您的應用程序相關。

所以,你通常有一個獨特但不安全的通道,它與任何一方的安全上下文都有關聯。通過讓服務器向客戶端發送一個不透明的引用,這總是可以被模擬並且更加暫時。然後,客戶端將其與每個包裝的請求一起發送,以替換服務器端應用程序需要映射的新問題,例如池中的安全邊界檢查。

我會阻止您構建批准認證的解決方案,而不是系統願意向您發佈安全上下文。通常情況下,創建新的安全上下文對人類用戶沒有影響,除非這是系統策略的一部分,或者他們正在使用缺乏TGT機制的基礎機制。

相關問題