如何使用从 OIDCStrategy 检索到的 accessToken 遍历 Azure Graph API?

How do I use accessToken retrieved from OIDCStrategy to traverse Azure Graph API?

我正在使用 https://github.com/AzureAD/passport-azure-ad 将 nodejs 应用程序与 Azure AD 集成。

我使用 OIDCStrategy 将用户登录到我的 node.js 应用程序。

这是我的代码:

 (passport.use(new OIDCStrategy({
  callbackURL: config.azureadCreds.callbackURL,
  realm: config.azureadCreds.realm,
  clientID: config.azureadCreds.clientID,
  clientSecret: config.azureadCreds.clientSecret,
  scope: "openid offline_access profile Directory.Read UserProfile.Read",
  identityMetadata: config.azureadCreds.identityMetadata,
  skipUserProfile: config.azureadCreds.skipUserProfile,
  responseType: config.azureadCreds.responseType,
  responseMode: config.azureadCreds.responseMode,
  passReqToCallback: true
},
function (iss, sub, profile, claims, accessToken, refreshToken, params, done) {
  request.get("https://graph.windows.net/<my-tenant-id>/me?api-version=1.5", {
    'headers': {
      'Authorization': "Bearer " + params["id_token"],
      'Content-Type': 'application/json'
    }
  }, function(err, res, body){
    if(err){
      console.log("err: " + err);
    }
    else{
      console.log("res: " + res);
    }
    done();
  });
 })));

然而我无法得到任何回应。我尝试了多种配置,但没有成功。

作为基于 Authorization Code Grant Flow, and to get user profiles via Graph APIs, we need to build the application on Service to Service Calls Using Client Credentials 的 Passport。

Authorization Code获取的access token不能简单的作为Graph API中的授权使用

因此我们需要通过 client_credentials 为访问令牌构建自定义 HTTP 请求,然后利用此令牌遍历 azure Graph API。

构建访问令牌请求:

使用访问令牌遍历 Azure 图形 API: