2015-02-24 64 views
1

我正在使用充当服务器并使用GSSAPI进行Kerberos身份验证的应用程序。如何在使用由客户端发送的令牌接受安全上下文之前获取用户名?

应用工作
在启动应用程序时,以往客户端发送协商就收购凭证
:令牌
使用的gss_accept_sec_context
来电显示名称来获取用户名像MYNAME @ DOMAIN

目前接受上下文应用程序正在为每个会话执行身份验证。

SSO身份验证与缓存

,但我想修改,以一次为第一届执行身份验证和缓存东西重新使用东西认证用户的应用程序。 这里我不能缓存用户名(MyName @ DOMAIN),因为要再次获取用户名应用程序,请接受上下文并调用显示名称。

有没有办法通过缓存执行SSO身份验证?

回答

1

发送具有通过现有安全上下文验证完整性的消息的能力是对高速缓存的凭据建立的访问。在每个新消息成功解包的情况下,通过使用gss_inquire_context()解开它的上下文关联数据源是很好的。

如果客户端既没有请求新的上下文,也没有发送与现有上下文无法配对的消息,那么没有收到完整的消息,因此服务器应该忽略客户端。 (但是,如果底层机制和配置支持委派,服务器可以代表客户端使用缓存凭据进行持续任务。)

组织通道和安全上下文之间关系查找的标准不是GSS的一部分;它只提供了一种可选方法来验证通道匹配情况,以防更改与您的应用程序相关。

所以,你通常有一个独特但不安全的通道,它与任何一方的安全上下文都有关联。通过让服务器向客户端发送一个不透明的引用,这总是可以被模拟并且更加暂时。然后,客户端将其与每个包装的请求一起发送,以替换服务器端应用程序需要映射的新问题,例如池中的安全边界检查。

我会阻止您构建批准认证的解决方案,而不是系统愿意向您发布安全上下文。通常情况下,创建新的安全上下文对人类用户没有影响,除非这是系统策略的一部分,或者他们正在使用缺乏TGT机制的基础机制。

相关问题