使用SSP和ADFS作为IdP代理的WordPress单点登录

时间:2016-03-17 14:42:03

标签: wordpress single-sign-on simplesamlphp windows2012 adfs3.0

好吧,我已经被困了好几天了,所以这是我唯一的希望。

我已经使用ADFS 3.0配置了Windows 2012 r2,使用SAML 2.0 Single Sign on插件配置了bitnami Wordpress(4.2.2),使用SimpleSAMLphp 1.13配置了Ubuntu服务器。

  

Wordpress配置如下所示:

WordPress NameID政策: WordPress NameID policy

WordPress属性: WordPress attributes

对于身份验证源,我使用的是SSP的文件模块。它有属性:

用户ID为

User-Name,用户电子邮件地址为mail,用户组为Filter-Id

  

在ADFS方面,我已将声明提供商信任配置为SSP,并依赖方信任WP。

这些声明规则为:

SSP:

规则1:转换名称ID政策。如果未设置此规则,WP的SSP会给NameIDPolicy带来无效错误。

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] == "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"] => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);

规则2:传递所有声明

c:[Type == "https://example.com/simplesamlphp/saml2/idp/metadata.php"] => issue(claim = c);

WordPress的:

规则1:将名称属性转换为WP的属性

c:[Type == "User-Name"] => add(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Value = c.Value);

规则2:转换邮件属性

c:[Type == "mail"] => add(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/emailaddress", Value = c.Value);

规则3:转换组属性

c:[Type == "Filter-Id"] => add(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/Group", Value = c.Value);

规则4:转换为Givenname属性

c:[Type == "User-Name"] => add(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/givenname", Value = c.Value);

规则5:转换为姓氏属性

c:[Type == "User-Name"] => add(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/surname", Value = c.Value);

规则6:转换名称ID政策&发布所有声明

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");

用户获得认证(SP / IdP-Initiated)。但在WP方面,我收到错误Username was not provided

ADFS跟踪器日志显示SSO token is null or empty. Cannot write SSO token to Cookies.

我检查了IdP的用户登录信息,并显示用户已登录。跟踪器日志还显示Valid assertion returned from 'https://example.com/simplesamlphp/saml2/idp/metadata.php'

我想索赔规则有问题,但我不确定,因为配置看起来很好。

欢迎任何指示!

谢谢!

1 个答案:

答案 0 :(得分:1)

所以链是WP - > ADFS - > SSP

通常,对于NameID,您使用转换规则,例如

使用电子邮件格式将电子邮件转换为NameID。

对于CP,您需要每个属性的传递规则。

此规则" c:[Type ==" https://example.com/simplesamlphp/saml2/idp/metadata.php"]  =>问题(claim = c);"不会传递所有规则 - 最好单独进行。

RP规则看起来正确,但NameID规则的格式为电子邮件,因此它应该来自电子邮件,而不是名称。