【问题标题】:IdentityServer3 Microsoft Graph scopes and flowIdentityServer3 Microsoft Graph 范围和流程
【发布时间】:2017-04-30 02:03:46
【问题描述】:

我的解决方案在通过 IdentityServer3 对 Azure AD 进行身份验证时运行良好。现在我们正在尝试集成一些 Microsoft Graph 功能。可悲的是,它惨遭失败。

通过其中一个演示 (https://graph.microsoft.io/en-us/docs/get-started/aspnetmvc) 项目运行,文档详细说明了在 Microsoft 应用注册门户 (https://apps.dev.microsoft.com) 上注册新应用程序,并明确告诉应用程序允许隐式流。

确保选中允许隐式流复选框,然后输入 http://localhost:55065/ 作为重定向 URI。 允许隐式流 选项启用 OpenID Connect 混合流。在认证过程中, 这使应用程序能够接收登录信息(id_token)和 应用程序使用的工件(在本例中为授权代码) 获取访问令牌。

当然,我们已经在 Azure 的生产门户上注册了一个应用程序来执行我们的身份验证,并且从 IdentityServer3 中的客户端,我们将流设置为Flow = Flows.Implicit,这似乎表明我们现在只有允许隐式流,但期望隐式流。

当我添加额外的范围 - offline_access User.Read Mail.Send - 我不再能够成功进行身份验证,相反,我收到一条错误消息,指出 Invalid Scope

我担心“Microsoft 应用程序注册门户”与现实生活有很大不同,有些东西没有正确设置。生产 Azure 应用注册中没有特定的“允许隐式流”设置,所以它真的接受 Implicit Flow 吗?

有没有人幸运地集成了这两个系统,并通过使用 IdentityServer3 对 Azure AD 进行的单一身份验证获得了充分利用 Microsoft Graph 的预期结果?

【问题讨论】:

    标签: c# azure azure-active-directory identityserver3 microsoft-graph-api


    【解决方案1】:

    在 Azure AD 注册门户中启用隐式授权流需要在应用清单中添加 "oauth2AllowImplicitFlow":true。本文档的“为单页应用程序启用 OAuth 2.0 隐式授权”部分详细说明了如何执行此操作:

    https://docs.microsoft.com/en-us/azure/active-directory/active-directory-integrating-applications

    另外,隐式授权流不会给你一个刷新令牌,offline_access 范围专门要求一个刷新令牌。我建议删除该范围。

    这是一个很好的文档,可以详细了解 AAD 上的隐式授权的详细信息:

    https://docs.microsoft.com/en-us/azure/active-directory/active-directory-dev-understanding-oauth2-implicit-grant

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 2016-11-04
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多