IdentityServer3 Microsoft Graph范围和流程

时间:2016-12-14 16:40:08

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

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

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

  

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

当然,我们已经在我们的Azure生产门户上注册了一个应用程序,我们的身份验证,而我们在IdentityServer3中的客户端,我们将流量设置为#ifndef BOARD_H #define BOARD_H class Board { public: Board(int size); void printBoard(); private: int _size; char _board[_size][_size]; }; #endif // BOARD_H ,这似乎表明我们&#39 ;现在只允许隐式流,但期望隐式流。

当我添加其他范围时,Flow = Flows.Implicit - 我无法再成功进行身份验证,而是收到错误,指出offline_access User.Read Mail.Send

我担心的是" Microsoft App Registration Portal"与现实生活完全不同,没有正确设置。没有特定的"允许隐含流"设置生产Azure应用程序注册,它是否真的接受Invalid Scope

有没有人幸运地整合这两个系统并从使用IdentityServer3的Azure AD的单一身份验证中获得完全利用Microsoft Graph的预期结果?

1 个答案:

答案 0 :(得分:0)

在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