Node.js 如何使用Axios通过节点js API获取Azure访问令牌
我在Nodejs中有一个后端,使用Axios进行API调用。我需要实现Azure身份验证以获取令牌,因此我遵循了以下示例: 该示例使用express,并重定向到首先获取和授权,然后是令牌,我一直在尝试使用Axios查找示例,但找不到 这就是我到目前为止所拥有的,这个想法是用结果来获得一个代币,任何指导都是非常感谢的Node.js 如何使用Axios通过节点js API获取Azure访问令牌,node.js,azure,msal-react,Node.js,Azure,Msal React,我在Nodejs中有一个后端,使用Axios进行API调用。我需要实现Azure身份验证以获取令牌,因此我遵循了以下示例: 该示例使用express,并重定向到首先获取和授权,然后是令牌,我一直在尝试使用Axios查找示例,但找不到 这就是我到目前为止所拥有的,这个想法是用结果来获得一个代币,任何指导都是非常感谢的 const msal = require('@azure/msal-node'); const REDIRECT_URI = "http://localhost:30
const msal = require('@azure/msal-node');
const REDIRECT_URI = "http://localhost:3000/";
const LOGIN = "https://login.microsoftonline.com/";
const config = {
auth: {
clientId: "12345678910",
authority: "https://login.microsoftonline.com/12345678910",
clientSecret: "Secret",
knownAuthorities: ["https://login.microsoftonline.com/12345678910"
]
}
};
const pca = new msal.ConfidentialClientApplication(config);
module.exports = {
async getAzureAdToken(){
try {
let instance = axios.create({baseURL: LOGIN});
const authCodeUrlParameters = {
scopes: ["user.read"],
redirectUri: REDIRECT_URI
};
pca.getAuthCodeUrl(authCodeUrlParameters).then((response) =>{
let url = response.substring(LOGIN.length);
instance.get(url).then((result) =>{
});
}).catch((error) => console.log(JSON.stringify(error)));
} catch (error) {
throw error
}
},
您可以使用axios获取访问令牌。客户端凭据流允许web服务(机密客户端)在调用另一个web服务时使用自己的凭据(而不是模拟用户)进行身份验证。在客户端凭据流中,权限由管理员直接授予应用程序本身。我们需要在API权限中添加应用程序权限
邮递员考试:
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id=<client_id>
&scope=https://graph.microsoft.com/.default
&client_secret=<client_secret>
&grant_type=client_credentials
如果我的回答有帮助,请接受我的回答,谢谢。您好,我可以使用上面的示例获取访问令牌,但是我无法使用该令牌调用Microsoft Graph并获取用户信息。当我尝试这样做时,我得到了以下结果:没有足够的特权来完成操作。我是否需要使用其他类型的身份验证流?我需要客户端凭据和用户信息。您好,@Classic。您可以在门户中共享您的api权限吗?我们通常在Microsoft Graph API中添加应用程序权限的
User.Read.All
。别忘了为你的租户授予管理员许可。嗨,Pamela,我检查了门户并设置了权限。我使用单页应用程序示例代码测试了获取用户配置文件的过程,结果成功了。我注意到JavaScript使用了一个登录方法,该方法接受了一个范围数组,而我在代码中没有这样做。我查看了@azure/msal代码,没有找到类似的代码。
// Replace these values from the values of you app
const APP_ID = '[APP_ID/CLIENT_ID]';
const APP_SECERET = '[CLIENT_SECRET]';
const TOKEN_ENDPOINT ='https://login.microsoftonline.com/[TENANT_ID]/oauth2/v2.0/token';
const MS_GRAPH_SCOPE = 'https://graph.microsoft.com/.default';
const axios = require('axios');
const qs = require('qs');
const postData = {
client_id: APP_ID,
scope: MS_GRAPH_SCOPE,
client_secret: APP_SECERET,
grant_type: 'client_credentials'
};
axios.defaults.headers.post['Content-Type'] =
'application/x-www-form-urlencoded';
let token = '';
axios
.post(TOKEN_ENDPOINT, qs.stringify(postData))
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log(error);
});