【问题标题】:ADFS error while doing silent authentication执行静默身份验证时出现 ADFS 错误
【发布时间】:2012-09-13 18:38:02
【问题描述】:

我有一个通过 ADFS 身份验证进行 Passport 身份验证的 SharePoint 应用程序 (App1)。我在另一个子域(App2)中有另一个 asp.net 应用程序,它也具有 ADFS 身份验证。从第一个应用程序我有一个 $.ajax (jquery) 调用来控制托管在另一个应用程序中。

问题是 FedAuth cookie 没有从 App1 发布到 App2。在 HTTP 跟踪中,我发现 FedAuth cookie 域名是特定于机器的。在 web.config “federatedAuthentication” 部分 -> cookieHandler 我提到域为“microsoft.com”。这解决了 FedAuth 在域属性中没有机器名称的问题。

在此更改之后,我遇到了以下错误: ID4230:SecurityToken 格式不正确。期望元素名称“SecurityContextToken”,找到“SP”。

在网上找不到帮助。尝试更改 cookieHandler 的路径和名称属性,但没有解决问题。更改名称会创建两个 FedAuth cookie。一种使用 FedAuth 名称,另一种使用新名称。

特别说明:如果认证后打开App1,将App2的URL粘贴到浏览器中,静默认证可以正常工作,我可以看到App2的控制。只有当我通过 Ajax 调用 App2 控件时才会出现问题。我尝试使用“凭据 = true -> XMLHTTPRequest 对象”调用 $.ajax,但无济于事。

任何帮助指针通过 Ajax 调用使静默身份验证正常工作?

【问题讨论】:

    标签: jquery sharepoint-2010 wif adfs2.0


    【解决方案1】:

    以下是我的场景。 我有一个安全令牌服务提供商(STS 提供商)WIF Web 应用程序和 3 个 Web 客户端或依赖方 STSClient1、STSClient2 和一个 Sharepoint Web 客户端

    如果所有客户端和 stsprovider 在同一个域中,我会遇到与您提到的相同的错误,但在所有客户端和 stsprovider 都在不同域中时不会。

    本文http://msdn.microsoft.com/en-us/magazine/ff872350.aspx

    有人提到

    至于cookie的名称和路径,名称默认为FedAuth,即应用程序目录的路径。为 cookie 指定一个唯一名称会很有用,特别是当解决方案中的许多 RP 应用程序共享同一个域时。相反,当您希望在同一域中的多个应用程序之间共享 cookie 时,您可以选择指定通用路径。

    所以我去了每个客户,并为 cookie 提供了一个唯一的名称,如下所示

    <federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="[STSProviderURL]" realm="[ClientUrl]" requireHttps="false" />
        <cookieHandler requireSsl="false" name="[UniqueName]" />
    </federatedAuthentication>
    

    【讨论】:

    • 我知道我需要更改 cookie 名称来解决我遇到的问题,但这是我能找到的唯一显示配置设置的地方。谢谢。
    猜你喜欢
    • 2013-10-18
    • 1970-01-01
    • 2014-12-23
    • 2014-11-09
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多