3

我有一个 SharePoint 2010 网站,仅将声明配置为 ADFS 的回复方。我还有一个为声明配置的 ASP.NET 应用程序,使用 WIF + Extension for SAML 2.0 CTP 作为同一 ADFS 服务器的回复方。

如果我导航到 SharePoint,我会被重定向到 ADFS 服务器 ( https://.../adfs/ls?... ) 并出现 Windows 登录提示。如果我随后在同一个浏览器实例中导航到我的 ASP.NET 应用程序,重定向会很快发生到同一个 ADFS 服务器,自动进行身份验证,并在没有安全提示的情况下重定向回 ASP.NET 应用程序。如如何在 SharePoint 2010 站点和 ASP.NET 应用程序之间共享身份验证上下文

当我在 SharePoint Web 部件的 IFrame 中嵌入 ASP.NET 应用程序时,会出现此问题。当启动一个新的浏览器实例并导航到 SharePoint 时,我会收到 Windows 登录提示。当页面加载到 IFrame 时,我会为嵌入 ASP.NET 应用程序的同一服务器获得第二个 Windows 提示。如果我取消提示,我会在 IFrame 中收到 401 Unauthorized。如果我导航到 ASP.NET 应用程序,我不会收到提示,它会自动登录。导航回 SharePoint 应用程序,页面将加载,包括 IFrame 内容而没有提示。

SharePoint Endpoint 使用 WS-Federation Passive Endpoint 来https://sharepoint:port/_trust/绑定 POST。ASP.NET 应用程序端点正在使用https://aspnetapp/具有绑定 POST 和工件的 SAML 断言使用者端点。从两者传递的声明包含每个应用程序所需的所有内容。

有谁知道在 SharePoint 中使用 IFrame 时如何防止第二次登录提示?

4

3 回答 3

1

System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0现在,在从现在内置的 WIF 类更新到单点登录后,它现在可以按预期工作 。我假设Microsoft.IdentityModel.Web.Saml2AuthenticationModule从未完成的 SAML 2.0 CTP 扩展存在兼容性问题。

于 2014-07-25T02:18:57.040 回答
0

只是在黑暗中拍摄,但假设自定义 ASP .NET 应用程序和 SharePoint 位于两台不同的机器上,那么考虑到 ASP .NET 页面位于 IFRAME 中,可能存在一些关于 kerberos 的微妙之处 - 可能是 kerberos 票证需要在 SharePoint 和 ASP .NET 之间传递。

HTH。

于 2012-07-18T07:55:59.313 回答
0

这只是一个猜测,但我相信这是因为两个站点,Sharepoint 站点和 iframe 中的嵌入式 asp.net 站点,同时开始加载。

由于两者都未经过身份验证,因此它们都进入了 Adfs。但是因为您没有经过身份验证,Adfs 会启动 401 质询,要求进行身份验证。但是,您的 Web 浏览器不会同时显示两个登录提示。相反,您会收到第一个登录提示,并且当您成功登录时,从那一刻起,Adfs 将保留身份验证,以便任何其他提出索赔的站点都可以免费获得它们。但是内部站点,asp.net 站点,已经开始了登录过程!您的浏览器不知道这一点,并强制您继续登录。

作为结论,我的想法是有一个需要身份验证的共享点页面,然后重定向到另一个页面,该页面在 iframe 中有 asp.net 站点,这样您的浏览器就不会尝试在同时。

于 2012-07-18T08:22:09.667 回答