0

我的解决方案一直在通过IdentityServer3对Azure AD进行很好的身份验证。现在我们正在尝试集成一些Microsoft Graph功能。可悲的是,它失败了。IdentityServer3 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

我担心的是,“微软应用程序注册门户”与现实生活中的不一样之处在于,某些东西没有正确设置。在生产Azure应用注册时没有特定的“允许隐式流”设置,那么它是否真的接受Implicit Flow

有没有人有过将这两个系统整合在一起的成功经验,并且通过使用IdentityServer3对Azure AD进行单一身份验证,获得完全利用Microsoft Graph的预期结果?

回答

0

在Azure AD注册门户中启用隐式授权流程需要在应用清单中添加"oauth2AllowImplicitFlow":true。本文档的部分中的“单页应用程序启用OAuth 2.0用户隐性补助”有详细的关于如何做到这一步一步的方向:

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

此外隐性补助流不会给你一个刷新令牌,offline_access范围特别要求刷新令牌。我建议删除该范围。

下面是对AAD隐式许可的细节多读书的好DOC:

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