pingfederate作为adfs声明提供程序

时间:2013-12-02 05:40:28

标签: adfs2.0 adfs

我正在尝试将PingFederate设置为ADFS中的声明提供程序,目的是我从PF域通过ADFS联合到ADFS RP。我希望ADFS在将数据发送到RP之前将Active Directory中的属性添加到断言中。 PingFederate仅发送用户的Windows登录ID。在Claim Provider方面,我正在通过Name ID。仅仅是为了测试,我尝试添加这样的属性:

c:[Type ==“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier”]  => add(Type =“http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”,Value =“myemail@test.com”);

我在CP方面添加了这个,然后在我的传递规则之上,然后在我的断言中没有添加任何内容。我也在RP方面试过这个没有运气。

我想我的问题是这是否可以在ADFS中实现。最后,我希望PingFed将用户的登录ID作为名称ID发送,让ADFS在Active Directory中查找用户并将电子邮件地址添加为声明然后将断言发送到RP。至于从Active Directory添加属性,我发现这篇文章technet.microsoft.com/en-us/library/ff678048.aspx。问题是我甚至无法添加手动值。

2 个答案:

答案 0 :(得分:0)

对于手动值,请使用以下内容:

=> issue(type = "http://contoso.com/partner", value = "Adatum");

对于查询,请使用以下内容:

使用普通LDAP规则生成loginID声明,然后

c:[Type == "http://company.com/claims/loginID", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";email;{0}", param = c.Value);

答案 1 :(得分:0)

我想出来了。我的第一个用例是确保AD帐户存在。

基本上需要的是CP方面的​​3项索赔规则:

1 - 根据名称ID执行查找。我创建了一个自定义规则

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]
 => add(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = "sAMAccountName={0};objectSID;{1}", param = c.Value, param = "MYDOMAI\" + c.Value);

查询所需的参数是:

  • 用于查找用户的LDAP查询
  • 要提取的属性
  • 用户的登录ID,格式为DOMAIN \ userid

2 - 只需通过

传递名称ID的声明规则

3 - 简单地通过

传递SID的声明规则

在RP方面,我有2个声明规则来传递名称ID和SID。然后我有一个发行授权规则,以确保SID作为索赔存在。这是一个自定义规则,包含以下内容:

EXISTS([Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"])
 => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "PermitUsersWithClaim");

似乎错综复杂,但这就是我所拥有的。我的第二个用例是确保帐户已启用,但我不确定这是否可行,因为disabled属性存储为userAccountControl属性中的一个位。