首页 文章

在ADFS 3.0中使用自定义身份验证/声明提供程序实现Office 365单一登录(RE:AADSTS90019)

提问于
浏览
0

我在ADFS 3.0中成功配置了一个新的声明提供程序信任,它允许我们使用单独的SAML IdP并让ADFS 3.0成为SP . 我们现在通过SAML IdP看到“您已登录” . 所以这部分工作正常(SSO到ADFS 3.0) .

但是,尝试访问Office 365应用程序现在返回https://login.microsoftonline.com/login.srf处的以下错误:

AADSTS90019:在请求中找不到或由任何提供的凭据暗示的租户识别信息 .

有任何想法吗?我是否需要添加依赖方信任以使Office 365也信任我们基于SAML的声明提供程序?

例如,尝试完成SSO-ed到Outlook Web App中的最后一步,感觉我只是几个参数 .

1 回答

  • 1

    因此,要正确执行此操作(通过ADFS中的自定义身份验证/声明提供程序将SSO导入Office 365),我们必须:

    • Allow the incoming Name ID claim. 将声明规则添加到ADFS中的新声明提供程序以传递名称ID .

    • Map the Name ID to the corresponding AD user. 向依赖信任方的现有Microsoft Office 365 Identity Platform添加声明规则,以使用名称ID(根据需要格式)查询AD并返回所需字段: UPNImmutableID .

    新索赔提供者的声明规则的香草示例:

    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:unspecified"]
    => issue(claim = c);
    

    使用名称ID查询AD并返回 UPNImmutableID 的示例:

    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:unspecified"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/UPN", "http://schemas.microsoft.com/LiveID/Federation/2008/05/ImmutableID"), query = "samAccountName={0};userPrincipalName,objectGUID;DOMAIN\{1}", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);
    

    最后,您应该在声明提供程序中添加对传入声明的一些过滤以增加安全性(即仅允许与您的域的电子邮件后缀匹配的传入声明等)

相关问题