我的解决方案通过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的预期结果?
答案 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隐性拨款的详细信息: