Azure AD 是否提供 API 方法来以编程方式验证用户?

Does Azure AD provide an API method to validate a user programmatically?

我想通过 Web 应用程序和本机移动应用程序验证 Azure AD 用户,尽管 Azure AD 不是我使用的唯一 IdP。

我已经阅读了 OAuth2 article but I'm having trouble tracking down an API method to validate against a user. One answer 说明,您可以在获取令牌时传递 usernamepassword 参数,但它似乎无法验证这一点。

有一个 DotNet 解决方案的示例,但我不熟悉 .NET - 尝试了 运行 它并且 运行 进入 System.TypeLoad 异常 (Could not load type of field 'Microsoft.Owin.Security.ActiveDirectory.WsFedMetadataRetriever:CS$<>9__CachedAnonymousMethodDelegate5')

我之前尝试过设置 SimpleSAML 解决方案,但缺点是对于本机应用程序它需要额外的工作并且可能不适合。

我建议您将用户重定向到 Azure AD 登录页面。

从技术上讲,您可以尝试使用资源所有者密码凭据授权来验证用户。但它并不总是有效。

这涉及您使用类似于以下的表单数据向 OAuth 令牌端点发出 POST 请求:

grant_type=password&username=user@example.com&password=Password&client_id=your-client-id&client_secret=your-client-secret&resource=resource-you-want-the-token-for

资源可能是 https://graph.windows.net,因为默认情况下您可以访问它。如果结果成功,那么是的,用户存在并且凭据有效。

但如果失败,则可能是因为:

  • 用户不存在
  • 密码错误
  • 用户开启了多重身份验证
  • 用户是联合用户(来自本地 AD),必须通过 ADFS 进行身份验证

所以它在某些情况下根本无法工作。