Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在使用客户端发送的令牌接受安全上下文之前获取用户名?_C_Authentication_Caching_Kerberos_Gssapi - Fatal编程技术网

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

C 如何在使用客户端发送的令牌接受安全上下文之前获取用户名?,c,authentication,caching,kerberos,gssapi,C,Authentication,Caching,Kerberos,Gssapi,我使用的应用程序充当服务器,并使用GSSAPI进行kerberos身份验证 应用程序工作 在启动应用程序时,请不要获取凭据 当客户端发送协商:令牌时 使用gss_accept_sec_context接受上下文 调用display name以获取用户名,如MyName@DOMAIN 当前应用程序正在为每个会话执行身份验证 带缓存的SSO身份验证 但是我想修改应用程序,在第一次会话中执行一次身份验证,并缓存某物,以使用某物重新验证用户。 这里我无法缓存用户名(MyName@DOMAIN)因为要再次获

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

应用程序工作
在启动应用程序时,请不要获取凭据
当客户端发送协商:令牌时
使用gss_accept_sec_context接受上下文
调用display name以获取用户名,如MyName@DOMAIN

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

带缓存的SSO身份验证

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


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

通过现有安全上下文发送完整性验证消息的能力是访问缓存的凭据建立。在每个新消息成功展开后,可以使用
gss\u inquire\u context()
将数据(如源原则)与展开它的上下文相关联

如果客户端既不请求新的上下文,也不发送可使用现有上下文解除包装的消息,则不会收到任何完整性信息,因此服务器应忽略客户端。(但是,如果底层机制和配置支持委派,服务器可以代表客户端使用缓存凭据来执行正在进行的任务。)

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

因此,您通常有一个唯一但不安全的通道,它由任何一方与其安全上下文关联。通过让服务器将不透明的引用发送回客户机,可以始终对其进行模拟,并且更为短暂。然后,客户端将此消息与每个包装好的请求一起发送,以将服务器端应用程序对映射的需求替换为新问题,如池中的安全边界检查

我不鼓励您在系统愿意为您提供安全上下文的时间之外构建一个批准身份验证的解决方案。通常,创建新的安全上下文不会对用户产生影响,除非这是系统策略的一部分,或者用户使用的底层机制缺少类似TGT的机制