Integration Sharepoint 2010,ADFS 2.0和ThinkTecture IdentityServer

时间:2013-01-19 23:09:17

标签: sharepoint-2010 adfs2.0 saml-2.0 claims thinktecture-ident-server

我有以下情况:

  • 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()失败:System.ServiceModel.FaultException:受信任的登录提供程序未提供此服务器场接受的令牌。
 在Microsoft.SharePoint.IdentityModel.SPSecurityTokenService.SPRequestInfo.ValidateTrustedLoginRequest()

拒绝访问:需要验证。

我发现,从Identity Server返回到ADFS的令牌包含emailaddress声明,但从ADFS返回到SP的令牌却没有。这是一个奇怪的,因为我有ADFS配置支持emailaddress通过所有索赔 (在身份服务器的声明提供者信任中)。我是否需要在其他地方设置adfs?我是adfs的新手。

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

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

以下是IdP元数据的摘录:

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

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

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

感谢

1 个答案:

答案 0 :(得分:0)

所以你的路径是SP - &gt; ADFS - &gt; IdentityServer?

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

添加:您需要为ADFS中的电子邮件声明创建传递声明规则 - 包括声明提供程序信任和依赖方信任。

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