我有以下情况:
- Sharepoint 2010 与基于声明的身份验证 Web 应用程序。
- ADFS 2.0 已将声明提供程序信任配置到 ThinkTecture IdentityServer。
- 已将 ADFS 2.0 配置为依赖方的 ThinkTecture IdentityServer。
- Sharepoint 2010 配置了指向 ADFS 2.0 的 SPTrustedIdentityTokenIssuer。
现在,当我登录到 Sharepoint 时,当我选择身份提供程序时,我被重定向到 ADFS 2.0 Home Realm 页面。然后我被重定向到 ThinkTecture IdentityServer。然后我使用来自 IdentityServer 的凭据进行登录,然后我被重定向回 ADFS,然后重定向到 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 的令牌包含电子邮件地址声明,但从 ADFS 返回到 SP 的令牌不包含。这很奇怪,因为我已将 ADFS 配置为支持电子邮件地址通过所有声明(在声明提供者对身份服务器的信任中)。我需要在其他地方设置 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。
如果这是实现所需行为的好方法,我将不胜感激。
谢谢