【问题标题】:Requesting data from multiple resources从多个资源请求数据
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复。不幸的是,这似乎并没有解决我的问题,因为我仍然无法成功调用 Graph API。当我使用 Graph API 的权限扩展范围时,也没有询问权限
猜你喜欢
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 2019-12-16
  • 1970-01-01
  • 2019-08-10
相关资源
最近更新 更多