gpt4 book ai didi

.net - WIF 4.5 BootstrapContext 安全 token null

转载 作者:行者123 更新时间:2023-12-03 11:02:43 24 4
gpt4 key购买 nike

我正在使用新的 4.5 WIF 内容来验证网站用户并保护我的 MVC 网站和 WCF 服务之间的通信。

我将网站配置为保存 bootstrap 上下文,以便我可以对服务层的所有请求重复使用相同的安全 token 。

在正常情况下,每个网站请求都经过身份验证,并且 SecurityToken 通过上下文提供以保护 WCF 调用,一切正常。

然而,如果网站应用程序域被重置(例如在开发时构建应用程序),对网站的任何请求仍将通过身份验证,但 SecurityToken 在上下文中不再可用以传递给 WCF 调用。

调试 BootstrapContext 它有 4 个有用的属性:

SecurityToken
SecutiryTokenHandler
Token
TokenBytes

Pre-app domain reset SecurityToken 和 SecurityTokenHandler 有值,post reset Token 有值。

在重置后观察 Token 的值,它看起来像是原始 SAML XML,所以我大概可以从中重新水化一个完整的 SecutiryToken 但这似乎是奇怪的行为,我找不到任何关于它的文档。

我可以做些什么来确保 SecurityToken 始终可用以防止我弄乱 token XML?

更新

使用 dotPeek 查看框架源代码中发生的事情,我可以看到导致这种行为的执行路径,但我无法确定为什么需要这种方式以及如何避免这种情况。

最后我放弃了尝试解决这个问题,现在使用以下代码来确保我有一个 token
if (context.SecurityToken != null)
{
token = context.SecurityToken;
}
else if (context.Token.IsNotEmpty())
{
var handlers = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.SecurityTokenHandlers;
token = handlers.ReadToken(new XmlTextReader(new StringReader(context.Token)));
}

我现在担心的是我错过了这个行为背后的一些推理,我上面的修复会在某个时候爆炸。

最佳答案

我偶然发现了同样的问题。
我看到 token 具有 token 的 xml 表示形式,而 SecurityToken 为空。
我还注意到通过杀死 w3wp.exe 很容易重现这一点。

关于.net - WIF 4.5 BootstrapContext 安全 token null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com