如何在使用客户端发送的令牌接受安全上下文之前获取用户名?

时间:2015-02-24 12:24:53

标签: c authentication caching kerberos gssapi

我正在使用充当服务器的应用程序并使用GSSAPI进行kerberos身份验证。

申请工作
在开始申请时,请获取凭证
当客户发送协商时:令牌
使用gss_accept_sec_context接受上下文 调用显示名称以获取用户名,如MyName @ DOMAIN

目前,应用程序正在为每个会话执行身份验证。

带缓存的SSO身份验证

但是我想修改应用程序以便在第一次会话中执行一次身份验证并缓存某些内容以使用某事重新验证用户身份。 在这里,我无法缓存用户名(MyName @ DOMAIN),因为要再次获取用户名应用程序,请接受上下文并调用显示名称。

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

1 个答案:

答案 0 :(得分:1)

通过现有安全上下文验证通过完整性发送消息的能力是对高速缓存的凭证集的访问。成功解开每个新消息后,可以使用gss_inquire_context()将源原则等数据与打开它的上下文相关联。

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

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

因此,您通常拥有一个独特但不安全的渠道,该渠道由任何一方与其安全上下文相关联。通过让服务器将不透明的引用发送回客户端,可以始终模拟并且更加瞬态。然后,客户端将其与每个包装的请求一起发送,以替换服务器端应用程序对映射的需求,例如池中的安全边界检查等新问题。

我不鼓励您构建批准身份验证的解决方案,而不是系统愿意向您发出安全上下文。通常,创建新的安全上下文对人类用户没有影响,除非这是系统策略的一部分,或者他们正在使用缺乏类似TGT机制的底层机制。