0

我对 angular-oauth2-oidc 非常陌生,无法访问 Microsoft Graph API,使用我们在 angular-oauth2-oidc 中作为 id_token 获得的图形令牌。

AuthConfig

    export const authCodeFlowConfig: AuthConfig = {

  // Url of the Identity Provider
  issuer: '<sample_issuer>',
  

  // URL of the SPA to redirect the user to after login
  redirectUri: window.location.origin+"/",
  responseType: 'id_token',
  clientId: 'client_id', //ApplicationID
  strictDiscoveryDocumentValidation:false,
  oidc: true,
  scope: 'openid, profile, email, api, User.Read',
  showDebugInformation: true,
  timeoutFactor: 0.01,
}

在这里,我的假设是一旦身份验证成功,那么该图形令牌将有足够的权限来访问

https://graph.microsoft.com/v1.0/me/photo/$value

但是,当我尝试使用邮递员从 oidc 身份验证中获得的令牌访问端点时,出现以下错误

在此处输入图像描述

在使用 jwt.io 解码令牌时,我发现令牌没有启用配置文件或任何其他范围。

我尝试使用来自 angular-oauth2-oidc https://github.com/manfredsteyer/angular-oauth2-oidc/tree/master/projects/quickstart-demo的示例应用程序

下面是触发登录的代码示例

在此处输入图像描述

任何帮助或指导将不胜感激。谢谢!

4

1 回答 1

0

这里有几件事要检查。

  1. 您正在使用 OIDC。请确保您使用访问令牌而不是id 令牌来访问 Graph API。

    使用类似这样的东西来获取令牌:

     GET https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/authorize?client_id={client id}&response_type=id_token%20token&redirect_uri=http://localhost/myapp/&response_mode=fragment&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read&state=12345&nonce=678910
    

    请注意,此处的响应包含 id 令牌和访问令牌(承载)。仅提取不记名令牌以调用 Graph API。确保您正在根据访问令牌检查范围。

  2. 另外,我建议先尝试在 POSTMAN 中运行,以将您的问题与代码隔离开来。

于 2021-08-18T21:10:09.237 回答