wordpress 的 NameID 策略无效

Invalid NameID policy for wordpress

我有以下设置:

Windows 2012 r2 与 ADFS 3.0。 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.

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

Transform an incoming rule: NameID transient to Windows account name

依赖方规则:

规则 1:

LDAP rules: SAM-Account-Name->Windows account name, E-Mail-Addresses-> Email Address

规则 2:

Transform an incoming claim: Windows account name-> NameID Transient Identifier

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

我到底做错了什么。

如果我遗漏了任何细节,也请告诉我。

谢谢!

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

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

这里是一个在SSP中使用authproc的例子,为NameId

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

还有其他NameID generation filters documented.