我正在使用作为服务器并使用GSSAPI进行kerberos身份验证的应用程序。
应用程序工作
启动时,应用程序必须获取凭据。
当客户端发送协商时:令牌
使用gss_accept_sec_context接受上下文
调用显示名称以获得类似MyName@DOMAIN的用户名
当前,应用程序正在为每个会话执行身份验证。
使用缓存的SSO身份验证
但是,我希望修改应用程序,以便在第一次会话中执行一次身份验证,并缓存 using ,以便使用using重新对用户进行身份验证。在这里,我不能缓存用户名(MyName@DOMAIN),因为要再次获得用户名应用程序,请接受上下文并调用显示名称。
有任何方法可以使用缓存来执行SSO身份验证吗?
发布于 2015-03-04 23:07:40
通过现有安全上下文验证的发送具有完整性的消息的能力是对缓存的凭据建立的访问。成功地打开每一条新消息后,就可以将数据关联起来,比如使用gss_inquire_context()解压缩它的上下文中的源原则。
如果客户端既不请求新上下文,也不发送与现有上下文不可包装的消息,那么就不会接收到任何具有完整性的消息,因此服务器应该忽略客户端。(但是,如果底层机制和配置支持委托,服务器可以代表客户端使用缓存的凭据来执行正在进行的任务。)
组织通道和安全上下文之间关系查找的标准不是GSS的一部分;它只提供一种可选的方法来验证通道匹配,以防更改与您的应用程序相关。
因此,您通常有一个唯一但不安全的通道,由任何一方与其安全上下文相关联。通过让服务器将一个不透明的引用发送回客户端,这总是可以被模拟,并且是更短暂的。然后,客户端将其与每个包装的请求一起发送,以替换服务器端应用程序对映射的需求,这些新问题包括池中的安全边界检查。
我不鼓励您构建一个解决方案,以批准比系统愿意为您提供的安全上下文更长的身份验证。通常,创建新的安全上下文对人类用户没有影响,除非这是系统策略的一部分,或者他们使用的是缺乏类似TGT机制的底层机制。
https://stackoverflow.com/questions/28695751
复制相似问题