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

时间:2017-11-03 21:00:48

标签: php azure single-sign-on microsoft-graph azure-ad-graph-api

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

我已阅读OAuth2 article,但我在跟踪API方法以验证用户时遇到问题。 One answer注意,您可以在获取令牌时传递usernamepassword参数,但似乎不会对此进行验证。

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

我以前曾尝试设置SimpleSAML解决方案,但缺点是对于原生应用程序,它需要额外的工作,可能不适合。

1 个答案:

答案 0 :(得分:2)

我建议您将用户重定向到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,因为默认情况下您可以访问该资源。如果结果成功,则是,用户存在且凭证有效。

但如果失败,可能会发生因为:

  • 用户不存在
  • 密码错误
  • 用户已启用多重身份验证
  • 用户是联盟用户(来自本地广告),并且必须通过ADFS进行身份验证

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