【发布时间】:2018-12-17 10:32:30
【问题描述】:
我正在尝试访问我的 Angular 项目中的多个 AzureAD 资源。目前我正在请求一个本地资源,它是一个 API,它提供了我需要在应用程序前端显示的所有数据。用户可以使用 AzureAD 成功登录,它会获取我用来从本地 API 检索数据的令牌。目前,这一直运行良好,并已用于生产。但是,为了向应用程序添加新功能,我有兴趣使用 Microsoft Graph API 来获取电子邮件、日历和其他数据。
不幸的是,我似乎无法让它正常工作,因为我一次只能添加一个资源。我可以从本地 API 或图形 api 获取数据,但不能同时获取。我希望有人能指出我正确的方向并解释我如何使用相同的访问令牌成功地连接两个 API。
我的 OAuth2 配置:
loginUrl: 'https://login.microsoftonline.com/{{tenant}}/oauth2/authorize',
clientId: '{{clientid}}',
resource: 'https://{{domain}}.com/{{appid}}', //'https://graph.microsoft.com',
logoutUrl: 'https://login.microsoftonline.com/{{tenant}}/oauth2/logout',
redirectUri: window.location.origin + '/' + window.location.pathname,
silentRefreshRedirectUri: window.location.origin + '/silent-refresh.html',
timeoutFactor: 0.8,
scope: 'openid offline_access https://{{tenant}}.onmicrosoft.com/{{local-api}}/user_impersonation',
oidc: true,
issuer: 'https://sts.windows.net/{{tenant}}/',
tokenEndpoint: 'https://login.microsoftonline.com/{{tenant}}/oauth2/token',
responseType: 'id_token token',
clearHashAfterLogin: true,
disableAtHashCheck: true,
showDebugInformation: true,
strictDiscoveryDocumentValidation: false,
【问题讨论】:
-
为什么不在现有 API 中加入调用 Microsoft Graph 并从后端返回连接数据?你可以看看HowTo: invite AAD user with Microsoft Graph
-
感谢您的回复。我没有这样想过,这可能是一种可能性。但是我认为从前端检索数据可能仍然是一个更好的选择,因为我要显示的数据都与当前登录的用户相关。它与从本地 API 返回的数据几乎没有联系。我曾尝试将 Graph API 的委派权限添加到本地 API,但忘了在问题中提及这一点。不幸的是,这似乎不起作用。
标签: angular authentication azure-active-directory microsoft-graph-api