使用使用隐式流获取的令牌获取On-Behalf-Of访问令牌

时间:2018-02-05 23:16:30

标签: oauth-2.0 asp.net-core-mvc azure-active-directory microsoft-graph msal

TL; DR:我想使用隐式流来获取访问令牌,并让用户同意我的应用程序从Microsoft Graph获取配置文件。当在服务器端获得代表令牌时,它会抱怨未经同意。

我有一个客户端应用程序使用隐式流从Azure Active Directory获取访问令牌。我使用的是MSAL,它正在检索范围openidprofilehttps://graph.microsoft.com/user.read

var app = new Msal.UserAgentApplication(clientId, authority, () => onTokenReceived(...), { postLogoutRedirectUri: window.location.origin + '/logout', redirectUri: window.location.origin + '/login-redirect' }); app.loginRedirect('https://graph.microsoft.com/user.read');

我从中获取范围<clientid>的访问令牌,并将其用作承载令牌,以便根据我的API对我进行身份验证。

var tokenPromise = app.acquireTokenSilent(['<clientid>'])

在服务器端,我想要从Graph中读取用户配置文件,因此我使用MSAL和代表流来请求提供的访问令牌。

而不是工作,错误:AADSTS65001: The user or administrator has not consented to use the application with ID '<clientid>' named '<name>'. Send an interactive authorization request for this user and resource.

我希望请求User.Read范围的图表可以获得所需的同意。当我为这个用户检查http://myapps.microsoft.com时,我有一堆权限(我疯狂地添加了一堆我可能不需要的):

Sign you in and read your profile Sign in as you Access your data anytime View your basic profile Access the directory as you Sign you in and read your profile

请注意,如果我同意管理员同意,则此方法有效 - 仅当用户必须同意其失效时才会同意。根据应用注册的权限区域,上述任何权限都不需要管理员同意。

我错过了什么?

0 个答案:

没有答案