从多种资源中请求数据

时间:2018-12-17 10:32:31

标签: angular authentication azure-active-directory microsoft-graph

我正在尝试在Angular项目中访问多个AzureAD资源。目前,我正在请求一个本地资源,该资源是一个API,可提供我需要在应用程序前端显示的所有数据。用户可以使用AzureAD成功登录,该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,

1 个答案:

答案 0 :(得分:1)

您需要做的是更改令牌的范围。您当前的令牌仅支持openid和offline_access。您可以找到所有不同的权限设置here。 获取正确的令牌后,就可以通过图形API获取所需的数据。 API reference

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