Integration Sharepoint 2010, ADFS 2.0 and ThinkTecture Ident



我有以下场景:

  • Sharepoint 2010基于声明的身份验证web应用程序。
  • ADFS 2.0已经配置了索赔提供者对ThinkTecture IdentityServer的信任。
  • ThinkTecture IdentityServer,它配置了ADFS 2.0作为依赖方。
  • Sharepoint 2010有SPTrustedIdentityTokenIssuer配置指向ADFS 2.0。

现在当我登录到Sharepoint时,当我选择身份提供程序时,我被重定向到ADFS 2.0 Home Realm页面。然后我被重定向到ThinkTecture IdentityServer。然后我用我的凭证从IdentityServer登录,我被重定向回ADFS,然后到Sharepoint。问题是,sharepoint显示错误信息。我正在添加来自sharepoint的日志记录:

已通过登录提供程序验证。验证请求安全令牌。

可信登录提供程序'SAML2提供程序'未发送配置的输入身份声明类型'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'

SPSecurityTokenService.Issue() failed: System.ServiceModel.FaultException:受信任的登录提供者未提供此场接受的令牌。
在Microsoft.SharePoint.IdentityModel.SPSecurityTokenService.SPRequestInfo.ValidateTrustedLoginRequest ()

Access Denied: Authentication is required.

我发现,从身份服务器返回到ADFS的令牌包含email地址声明,但从ADFS返回到SP的令牌没有。这很奇怪,因为我已经将ADFS配置为支持通过所有索赔的电子邮件地址(在身份服务器的索赔提供者信任中)。我需要在其他地方设置adfs吗?我是adfs的新手。

我想要实现的是通过ADFS将我的请求转发到IdentityProvider(在本例中为ThinkTecture IdentityServer),并从IdentityProvider获取令牌。ThinkTecture IdentityServer仅在我的测试环境中,在真实环境中它将被Oracle Identity Federation所取代。

目标问题是将Sharepoint 2010与Oracle Identity Federation集成。但问题是,Sharepoint不支持saml2协议,而OIF将提供该协议作为唯一的端点绑定。所以我试图用ADFS(作为一个类似代理的东西)来破解它,它将与一边基于SAML 1.1的Sharepoint通信,另一边基于SAML 2的OIF通信。

以下是IdP元数据的摘录:

<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">... 

所以我没有选择使用WS-Federation。

如果这是一个实现所需行为的好方法,我将不胜感激。

谢谢

所以你的路径是SP -> ADFS -> IdentityServer?

问题是电子邮件地址没有被传递。因此,您必须设置IdentityServer来生成电子邮件地址声明,并且必须设置ADFS来通过所有声明。然后配置SP接受电子邮件地址作为声明(使用SP Powershell命令)。

添加:您需要在ADFS中为电子邮件索赔创建直通索赔规则—包括索赔提供者信托和依赖方信托。

OIF支持WS-Federation -参考ORACLE IDENTITY FEDERATION 11g R2 -所以将OIF与SP联合没有问题。