我们有一个使用以下代码登录到Sharepoint Online的代码: https://login.microsoftonline.com/extSTS.srf或https://login.microsoftonline.com/RST2.srf,但最近我们开始通过身份验证失败,提示“错误的用户名或密码”,并在重试后返回:
“ 0x80048823消息:AADSTS70002:验证凭据时出错。AADSTS50053:您尝试使用错误的用户ID或密码登录了太多次。”
虽然使用相同的用户名和密码登录浏览器可以正常工作,并且密码或用户名均未更改,但代码也未更改。同样的代码对于其他Sharepoint租户也可以正常工作。似乎Microsoft登录服务器中发生了一些变化,开始不接受用户凭据,而Web浏览器登录正常。
请告知。
谢谢
答案 0 :(得分:1)
Microsoft Rep帮助我做到了这一点。
他们让我们创建了一个“仅云”用户。此用户设置为“ @”,因此,如果您的名字是bill,而您的公司共享站点的名称是FakeCompany.sharepoint.com,则该人的名字将是“ bill@FakeCompany.onmicrosoft.com”
该用户只需输入用户名和密码即可登录https://login.microsoftonline.com/extSTS.srf。
我们的高级AD用户仍然遇到问题,我提到了这一点,并得到了以下答复。
同步没有问题,因为您可以使用相同的帐户和密码登录门户。 您需要的解决方案已记录在https://docs.microsoft.com/en-gb/azure/active-directory/manage-apps/configure-authentication-for-federated-users-portal#enable-direct-authentication-for-legacy-applications
中您需要在其中“ AllowCloudPasswordValidation”:true的情况下创建家庭领域发现(HRD)策略。
我们尚未实现最后一个解决方案,但是创建云帐户可能会帮助某些人。
答案 1 :(得分:0)
所以我想我理解他们要说的话。根据node-sp-auth示例,您可以使用2条路径进行身份验证。
“托管”和“联合”
“ Managed”是更简单的版本,它使您能够仅提供用户名和凭据以进行断言。
联合要复杂得多。您需要先执行发布至Microsoft的操作,以验证用户是否点击了adfs服务器。 https://adfs.XXXXXXX.com/adfs/services/trust/13/usernamemixed
然后,您从该响应中获取saml:Assertion,并使用node-sp-auth中的模板将其放入您对https://login.microsoftonline.com/extSTS.srf进行的调用的“令牌”部分中。
我有执行所有这些步骤的C#代码,但出现错误 AADSTS70002:验证凭据时出错。 AADSTS50008:SAML令牌无效。 AADSTS50006:无效的签名。签名验证失败。
即使签名是由Microsoft在其SAML中生成的。
node-sp-auth代码参考是OnlineUserCredential.ts文件。
如果有人可以弄清楚最后一英里,我可以发布全面的C#解决方案。