0

我有以下设置:

带有 ADFS 3.0 的 Windows 2012 r2。WordPress 设置为 SP(依赖方信任),SimpleSAMLphp 设置为 IdP(声明方信任)。

我想在 SSP 的帮助下对 WordPress 用户进行身份验证。控制流程就像:用户登录到 WordPress。然后,该页面会显示在 ADFS 服务器上配置的 IdP 提供程序的数量。用户选择 SSP。用户通过 SSP 进行身份验证,并将响应发送到 ADFS,然后将信息传递给 WordPress。

我已经配置了所有的依赖和索赔方并且它单独运行良好(WP-ADFS、ADFS-SSP)但是当我尝试使用 SSP 对 WP 进行身份验证时,它给了我error: The SAML authentication request had a NameID Policy that could not be satisfied.

我将规则设置为:索赔方规则:

将传入规则:NameID 临时转换为 Windows 帐户名称

依赖方规则:

规则1:

LDAP 规则:SAM-Account-Name->Windows 账户名,E-Mail-Addresses->Email 地址

规则 2:

转换传入声明:Windows 帐户名称-> NameID 瞬态标识符

我刚刚开始在 Windows 服务器上使用 SSO,所以对声明规则不太了解,我猜它可能有问题,因为所有模块都运行正常。(例如:WP 作为 SP,ADFS 作为 IdP,ADFS 作为 SP,SSP 作为 IdP)。

我到底做错了什么。

如果我错过了任何细节,也请告诉我。

谢谢!

4

1 回答 1

3

第一步是找出请求的 NameID 策略。在 FireFox 中安装SAML Tracer并运行您的流程。您会看到AuthnRequest可能有一个NameIDPolicy列表(示例<samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress")。

一旦您知道需要什么 NameID,您可以尝试将 Wordpress 配置为接受不同的类型(SSPurn:oasis:names:tc:SAML:2.0:nameid-format:transient默认使用)或配置 SSP 以以预期格式发布 NameID。

这是authproc在 SSP 中使用mailNameId 属性的示例

'authproc' => array(
             60 => array(
                    'class' => 'saml:AttributeNameID',
                    'attribute' => 'mail',
                    'Format' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
            ),
    ),

记录了其他NameID 代过滤器

于 2016-03-14T20:19:37.627 回答