如何使用从 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:
我正在使用 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: