首页 > 解决方案 > 从多个资源请求数据

问题描述

我正在尝试在我的 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,

标签: angularauthenticationazure-active-directorymicrosoft-graph-api

解决方案


您需要做的是更改令牌的范围。您当前的令牌仅支持 openid 和 offline_access。您可以在此处找到所有不同的权限设置。一旦您选择了正确的令牌,您就可以通过图形 api 获取您要求的数据。API 参考

请记住,您的用户必须同意授予您访问此数据的权限。


推荐阅读