c# – ContextSessionSecurityToken在第二个用户登录时被覆盖

c# – ContextSessionSecurityToken在第二个用户登录时被覆盖,第1张

概述我有一个问题发生在一个非常头痛的单一生产环境中. 您有两个用户A和B.用户A登录,一切正常.用户B登录,用户B登录后,用户A现在具有与用户B相同的安全令牌. 我们的WIF设置是相当标准的,我们在令牌上注入一些自定义声明,但是除了创建和存储令牌(WIF处理)之外,其他一切都看起来是标准的. 感觉像我可能会遇到一些奇怪的边缘案例与WIF,我不熟悉 更新:A和B都可以在单独的机器上,也可以在同一台机器上 我有一个问题发生在一个非常头痛的单一生产环境中.

您有两个用户A和B.用户A登录,一切正常.用户B登录,用户B登录后,用户A现在具有与用户B相同的安全令牌.

我们的WIF设置是相当标准的,我们在令牌上注入一些自定义声明,但是除了创建和存储令牌(WIF处理)之外,其他一切都看起来是标准的.

感觉像我可能会遇到一些奇怪的边缘案例与WIF,我不熟悉

更新:A和B都可以在单独的机器上,也可以在同一台机器上的单独的浏览器上.

我们在请求服务时获取令牌的位置

if (httpContext.Current == null)    return null;if (httpContext.Current.Cache == null)    return null;if (FederatedAuthentication.SessionAuthenticationModule == null)    return null;if (FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken == null)    return null;var sessionToken = FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken;if (sessionToken.ClaimsPrincipal == null)    throw new InvalIDOperationException("The ClaimsPrincipal property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");if (sessionToken.ClaimsPrincipal.IDentitIEs == null)    throw new InvalIDOperationException("The ClaimsPrincipal.IDentitIEs sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");if (sessionToken.ClaimsPrincipal.IDentitIEs.Count == 0)    throw new InvalIDOperationException("The ClaimsPrincipal.IDentitIEs sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object has no IDentitIEs");if (sessionToken.ClaimsPrincipal.IDentitIEs[0] == null)    throw new InvalIDOperationException("The first IDentity in the ClaimsPrincipal.IDentitIEs sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");if (sessionToken.ClaimsPrincipal.IDentitIEs[0].Claims == null)    throw new InvalIDOperationException("The first IDentity in the ClaimsPrincipal.IDentitIEs sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object as a null Claims property");return TokenUtility.GetDelegatedToken(IssuedTokenTypes.UserProfile | IssuedTokenTypes.AccountPermissions,sessionToken);

如果我在这里添加日志记录,我可以看到sessionToken.ClaimsPrincipal.IDentity.name与此应该是这个名称不同.

解决方法 您的依赖方和STS(WIF)服务器是否托管在同一IIS上,使用相同的应用程序池?如果是,那么尝试使用不同的应用程序池作为工作进程有时用来弄乱事情.希望这将有助于您. 总结

以上是内存溢出为你收集整理的c# – ContextSessionSecurityToken在第二个用户登录时被覆盖全部内容,希望文章能够帮你解决c# – ContextSessionSecurityToken在第二个用户登录时被覆盖所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1261367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存