我们遇到的问题与Windows设备和联合Azure用户有关。我们构建了一个使用Graph API为用户配置Office 365的应用程序。这些用户也保存在我们的本地活动目录中。
我们还构建了一个为这些用户提供SSO的应用程序。此应用程序与处理多个Office 365租户(通过委派)兼容
到目前为止,这么好。我们可以毫无问题地提供和WebO中的SSO工作。尽管如此,我们还是使用了自定义STS。其上的STS使用我们的ADFS进行授权。
我们遇到的问题是,当我们使用Windows 10设备并尝试使用联盟用户登录时,我们始终会收到“用户名或密码错误”的通知。我们已经对密码进行了三次检查,这是正确的(请记住网络流程正常工作)。
经过数小时的研究,我们得出结论,我们需要WsFed作为我们的身份验证协议。您似乎在使用设备登录时,步骤如下:
提供用户名 - > Windows检查域是否已联合 - >调用MetadataExchange URI - >我们的ADFS的usernamemixed端点被称为 - > SOAP消息被发送到Office,您应该登录。
我们花了好几个小时才开始工作,但没有用。我们现在已经在不同的URL上创建了MetadataExchange的镜像版本,并更改了它将尝试从ADFS获取用户的位置。电话通过那里,一切似乎都没问题,但我们仍然收到“错误的用户名或密码”通知。
使用fiddler我们可以看到,在最后一步中,Office返回以下错误:
“invalid_grant”,“error_description”:“AADSTS70002:验证错误 证书。 AADSTS50155:设备未经过身份验证。
我们如何让它发挥作用。所有设备授权都应用于Azure端(尽管AAD API和Graph API似乎都有设备授权,我们都应用了这些授权)。
当我们规避自己的STS并直接链接到ADFS everthings时,这是不可取的,因为我们需要一个适用于多个租户的解决方案(也是我们不使用AADSync的原因)。
欢迎任何建议!
答案 0 :(得分:1)
也许您可以使用所需的流程和有效的流程发布原理图概述?
此流程中是否使用了EPC端点?如果是,它是在ADFS上还是在自定义STS中托管?
答案 1 :(得分:0)
使用ECP端点,但该端点仅处理来自Exchange客户端(如iPhone,Outlook for Windows等)的调用,并且像魅力一样工作。 Windows登录不使用该端点,所以我不认为可以在那里找到解决方案。我怀疑当我们使用自己的STS时,翻译中有索赔丢失,但我找不到一个消息来源告诉我在处理设备时会有哪些声明。
更新:我们能够让ADFS与多个域一起使用。通过遵循https://docs.microsoft.com/nl-nl/azure/active-directory/device-management-hybrid-azuread-joined-devices-setup提示,我们可以翻译声明,以便多个域可以正常工作。