gpt4 book ai didi

node.js - 如何使用 Axios 通过 Node js API 获取 Azure 访问 token

转载 作者:行者123 更新时间:2023-12-03 00:45:33 26 4
gpt4 key购买 nike

我在 Nodejs 中有一个后端,使用 Axios 进行 API 调用。我需要实现 Azure 身份验证来获取 token ,因此我遵循了以下示例:

https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-nodejs-webapp-msal?WT.mc_id=Portal-Microsoft_AAD_RegisteredApps

该示例使用express,并重定向到第一个获取和授权,然后是一个 token ,我一直在尝试使用 Axios 查找示例,但找不到。

这就是我到目前为止所拥有的,想法是使用结果来获取 token ,任何指导都非常感谢。

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
}
},

最佳答案

您可以使用client credentials flow使用 axios 获取访问 token 。客户端凭据流允许 Web 服务( secret 客户端)在调用另一个 Web 服务时使用自己的凭据(而不是模拟用户)进行身份验证。在客户端凭证流程中,权限由管理员直接授予应用程序本身。我们需要在API Permission中添加应用权限。

在 postman 中测试:

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

使用 Nodejs 的代码:

// 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);
});

关于node.js - 如何使用 Axios 通过 Node js API 获取 Azure 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67009128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com