【问题标题】:How do I use accessToken retrieved from OIDCStrategy to traverse Azure Graph API?如何使用从 OIDCStrategy 检索到的 accessToken 来遍历 Azure Graph API?
【发布时间】:2015-10-27 17:23:37
【问题描述】:

我正在使用 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();
  });
 })));

但是我无法得到任何回应。我尝试了各种配置,但都没有运气。

【问题讨论】:

    标签: node.js azure adal


    【解决方案1】:

    由于 Passport 是在 Authorization Code Grant Flow 上构建的,并且要通过 Graph API 获取用户配置文件,我们需要在 Service to Service Calls Using Client Credentials 上构建应用程序。

    Authorization Code 得到的 access token 不能简单的作为 Graph API 的授权使用。

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

    构建访问令牌的请求:

    使用访问令牌遍历 azure Graph API:

    【讨论】:

    • 啊..我明白了。说得通。谢谢。
    • 不要有人建立一个例子,因为它对我没有意义!我不是全职开发人员,我只需要访问图形 API,这样我就可以从 O365 中提取合理的数据。没有一个 MS 示例足够完整,无需大量信息和理解即可使用。
    • 您好@JulianKnight,您可以参考dev.office.com/getting-started/office365apis。该站点将帮助您以您喜欢的语言构建示例项目。
    • 啊!那个是从哪里来的!我找了好久!太感谢了。不知道我怎么错过了。所以它使用新的 ADAL.js 库。这也回答了一些问题。
    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多