率这个职位

AD FS 2.0更新汇总1允许单个ADFS场为Office 365联合身份验证支持多个顶级域。不幸的是,使用RU1生成的默认索赔规则不支持包含子域的多个顶级域。

但是,如果您有多个顶级域(@contoso.com和@fabrikam.com),这些域也有子域(@sales.contoso.com和@sales.fabrikam.com)“supportmultipledomain”子域无法使用开关,这些用户将无法登录。“-办公室365维基

好消息是,可以通过更新第三个Office365索赔规则的正则表达式来消除此限制。在我们解释“如何”之前,让我们看看“为什么”。

使用小提琴手,我们可以跟踪传递到login.microsoftonline.com/login.srf的令牌。在使用默认声明规则检查数据包时,我们可以看到整个域正在作为“颁发者ID”传递。价值观:

2012年8月17日t00:47:11.032z 2012年8月17日t01:47:11.032z urn:联盟:MicrosoftOnline issuer=“http://sub.domain.com.au/adfs/services/trust/”issueInstant=“2012-08-17t00:47:11.033z”xmlns:saml=“urn:oasis:name:tc:saml:1.0:assertion”>

如果您使用父域登录,这很好。然而,如果您正在使用联合子域登录,您将看到以下消息,Office 365服务将无法访问:

所以,为什么会这样?联合子域在父域的范围内进行管理。Office 365需要包含父域的颁发者ID。在这一点上,如果要联合生产域,则有两个选项;您可以将联邦域转换回标准域(这意味着您需要将新密码分发给所有用户)。或者更新索赔规则。向整个用户群分发新密码而不访问电子邮件听起来像是一种拖拽,那么让我们来做后者。

更新索赔规则:

  1. 在主农场服务器上打开AD FS 2.0管理控制台,并找到依赖方信托节点。选择Microsoft Office 365标识平台信任并选择编辑索赔规则
  2. 选择第三个索赔规则并选择编辑规则

  3. 将默认索赔规则替换为以下值,然后选择好啊

C:[type==“http://schemas.xmlsoap.org/claims/upn”]=>问题(type=“http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid”,值=regexreplace(c.value,“^(.*)([.@@])?”?
          
           [^.]*(Aero Asia Biz cat co com coop edu gov health info int jobs mil mobi museum name net org post pro tel travel)(.\w\w)?$域“http:// $ {} / adfs /服务/信托/ "));
          

就是这样。子域的身份验证现在可以工作了。如果我们用小提琴重复我们的痕迹,我们现在可以看到颁发者ID包含父域。

2012年8月17日t00:50:36.026z 2012年8月17日t01:50:36.026z urn:联盟:MicrosoftOnline issuer=“http://domain.com.au/adfs/services/trust/”issueInstant=“2012-08-17t00:50:36.035z”xmlns:saml=“urn:oasis:name:tc:saml:1.0:assertion”>

特别感谢Microsoft Premier支持提供在修订的索赔规则中使用的正则表达式。

类别:
ADFS办公室365

加入对话!11评论

  1. 你好,
    只是澄清一下,因此,您测试了配置为forest domain.com的ADF也可以与单独的forest domain.net一起使用,或者只与同一林中的新根域一起使用。?
    谢谢。

    回复
  2. 嗨,罗斯,
    我试过你在文章中提出的解决方法,对我来说效果很好,所以,首先,感谢您分享。现在我已经打开了一个服务请求和O365技术支持,但他们似乎不知道wiki中描述的问题找到了解决方案:请您发布Microsoft高级支持案例(他们向您发送了修改后的索赔规则,如果我没有弄错的话)那么我可以从他们那里得到一个认证的答案?
    谢谢

    回复
  3. 谢谢这篇文章,大卫。

    我正在尝试使此规则与ADFS2.0和汇总3一起使用,但它似乎不喜欢regex。

    是否可能存在regex的问题?

    回复
  4. 谢谢,戴维。能够在项目中使用此索赔规则调整。请注意,复制和粘贴代码时要小心。有些字符可能需要调整。

    回复
  5. 感谢您的反馈。我已经更新了索赔规则,以包括一些附加的顶级域,并更正了格式,因此复制/粘贴现在可以工作了。

    回复
  6. 嗨,戴维,
    这帮了我不少忙。我必须将我们自己的域(.dk)添加到regex,这为我们解决了问题。我冒昧地引用了你的博客http://community.office365.com/en-us/forums/613/p/208055/632389.aspx_632389

    回复
  7. 你好,
    一个ADFS服务器场是否支持使用一个顶级域和多个子域进行设置?

    新的名称
    child1.contoso.com
    child2.contoso.com网站

    回复
  8. 我们遇到了这样一种情况:我们需要以域的四个部分结束,并包括子域——例如,域是example.qld.edu.au,并且可能存在子域students.example.qld.edu.au或staff.example.gld.edu.au。

    我们通过以下方法来实现:

    C:[type==“http://schemas.xmlsoap.org/claims/upn”]=>问题(type=“http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid”,值=regexreplace(c.value,“^(.*)([.@@])?”?(\w+\.\w+\.\w+\.\w 2,3美元)?)$域“http:// $ {} / adfs /服务/信托/ "));

    回复

留下答复