Sharepoint 2010 基于ADFS索赔的SharePoint 2010和嵌入式IFrame ASP.NET索赔感知应用程序单点登录

Sharepoint 2010 基于ADFS索赔的SharePoint 2010和嵌入式IFrame ASP.NET索赔感知应用程序单点登录,sharepoint-2010,wif,claims-based-identity,adfs2.0,Sharepoint 2010,Wif,Claims Based Identity,Adfs2.0,我将SharePoint 2010网站配置为仅作为ADFS的回复方进行索赔。我还为索赔配置了一个ASP.NET应用程序,使用WIF+Extension for SAML 2.0 CTP作为同一ADFS服务器的应答方 如果导航到SharePoint,我将被重定向到ADFS服务器(.)并显示Windows登录提示。如果随后在同一浏览器实例中导航到我的ASP.NET应用程序,则重定向将快速发生到同一ADFS服务器,自动进行身份验证,并重定向回ASP.NET应用程序,而无需安全提示。如在 当我将ASP.

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

如果导航到SharePoint,我将被重定向到ADFS服务器(.)并显示Windows登录提示。如果随后在同一浏览器实例中导航到我的ASP.NET应用程序,则重定向将快速发生到同一ADFS服务器,自动进行身份验证,并重定向回ASP.NET应用程序,而无需安全提示。如在

当我将ASP.NET应用程序嵌入SharePoint web部件的IFrame中时,会出现此问题。启动新的浏览器实例并导航到SharePoint时,我会收到windows登录提示。当页面加载到IFrame时,我会收到第二个Windows提示,提示嵌入ASP.NET应用程序的相同服务器。如果我取消提示,我会在IFrame中得到一个401未授权。如果导航到ASP.NET应用程序,系统不会提示我,它会自动登录。导航回SharePoint应用程序时,页面将加载包含IFrame内容的内容,而无需提示

SharePoint终结点正在使用WS-Federation被动终结点来
https://sharepoint:port/_trust/
带装订柱。 ASP.NET应用程序终结点正在使用SAML断言使用者终结点
https://aspnetapp/
带有绑定帖子和工件。 从两者传递的声明包含每个应用程序所需的所有内容


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

只是一个偶然的机会,但假设自定义ASP.NET应用程序和SharePoint位于两台不同的计算机上,然后,考虑到ASP.NET页面位于IFRAME中,可能会有一些关于kerberos的微妙之处——可能是需要在SharePoint和ASP.NET之间传递kerberos票证


HTH.

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

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


最后,我的想法是创建一个sharepoint页面,该页面需要身份验证,然后重定向到另一个页面,该页面在iframe中包含asp.net站点,这样您的浏览器就不会同时尝试启动两个站点的登录序列

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

谢谢!这是一个非常好的理论。但是,在导航到SharePoint时,它会在加载页面之前重定向到ADFS,并且只有经过身份验证后才会返回以呈现SharePoint页面。我还使用iframe中的嵌入式asp.net站点在SharePoint主页的第二个页面上对其进行了测试。谢谢,但据我所知,Kerberos在声明身份验证中没有任何作用。但是,我确实认为存在令牌传递问题,因为SharePoint存储的声明令牌与ASP.NET页面中使用的Microsoft Identity Framework不同。