我们有一个代码,它使用以下方法登录到 Sharepoint Online: https://login.microsoftonline.com/extSTS.srf 或 https://login.microsoftonline.com/RST2.srf,但最近我们开始收到身份验证失败,说"用户名或密码不正确",经过几次重试后它返回:
">0x80048823消息: AADSTS70002:验证凭据时出错。AADSTS50053:您尝试使用不正确的用户 ID 或密码登录的次数过多。
虽然使用相同的用户名和密码在浏览器中登录工作正常,并且密码或用户名都没有更改,代码也没有改变。因为相同的代码适用于另一个 SharePoint 租户。似乎Microsoft登录服务器发生了一些变化,它开始不接受用户凭据,而 Web 浏览器登录工作正常。
请指教。
谢谢
Microsoft Rep帮助我走到了这一步。
他们让我们创建一个"仅限云"的用户。此用户设置为"@",因此,如果你的姓名是 bill,而你的公司 SharePoint 网站是 name 是 FakeCompany.sharepoint.com 那么你的姓名将是"bill@FakeCompany.onmicrosoft.com">
该用户只需传递用户名和密码即可登录到 https://login.microsoftonline.com/extSTS.srf。
我们的本地 AD 用户仍然遇到问题,我提到了这一点并得到了以下响应。
同步没有问题,因为您可以使用相同的帐户和密码登录到门户。 您需要的解决方案记录在 https://learn.microsoft.com/en-gb/azure/active-directory/manage-apps/configure-authentication-for-federated-users-portal#enable-direct-authentication-for-legacy-applications
您需要创建一个主领域发现 (HRD( 策略,其中"允许云密码验证":true。
我们尚未实施最后一个解决方案,但创建云帐户可能会对你们中的一些人有所帮助。
所以我想我明白他们想说什么。根据 node-sp-auth 示例,您可以使用 2 条路径进行身份验证。
">托管"和"联合">
"托管"是更简单的版本,允许您在肥皂断言中仅提供用户名和凭据即可登录。
联合要复杂得多。您需要首先向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 code reference 是 OnlineUserCredential.ts 文件。
如果有人能弄清楚最后一英里,我可以发布一个全面的 C# 解决方案。