gpt4 book ai didi

Javascript AzureAd 使用休息服务

转载 作者:行者123 更新时间:2023-12-02 23:27:23 26 4
gpt4 key购买 nike

RestAPI:我有一个使用 AzureAd 身份验证运行 Asp Core 的 Rest API。

WebApp:我有一个单独的 Web 应用程序,运行 Asp Core 作为后端,并使用 Javascript 前端。

WebApp 后端通过 AzureAd 进行身份验证,然后根据 RestAPI 检查用户是否已注册。

我希望 javascript 客户端能够直接使用 Rest API。我应该如何在不暴露访问 token 的情况下解决这个问题?

我可以将请求从 Javascript 发送到 WebApp 后端 -> Rest API。但我真的想避免这种情况,因为有不必要的代码。

最佳答案

在这种情况下,您可以尝试实现 ADAL for js在你的 JS 客户端中。利用 **adal** 获取身份验证 token ,当您调用 Web Api 时,它将在 HTTP 请求中添加身份验证 header 。

EG

假设我们想从 JS 客户端调用 Microsoft Graph API。我们开发一个 Node.js 脚本,该脚本使用请求为组调用 Microsoft Graph API 以创建新的安全组。

以下代码显示了如何从该脚本使用 API。请注意, token 和名称是通过参数传递的。此外,此函数返回一个 Promise,当组正确创建时,该 Promise 会成功解析;而当组创建不正确时,该 Promise 会被拒绝。

var request = require('request');

function createGroup(token, name) {
return new Promise((resolve, reject) => {
const options = {
method: 'POST',
url: 'https://graph.microsoft.com/v1.0/groups/',
headers: {
'Authorization': 'Bearer ' + token,
'content-type': 'application/json'
},
body: JSON.stringify({
"displayName": name,
"mailEnabled": false,
"securityEnabled": true
})
};

request(options, (error, response, body) => {
const result = JSON.parse(body);
if (!error && response.statusCode == 204) {
resolve(result.value);
} else {
reject(result);
}
});
});
}

为了调用 Microsoft Graph API,我们需要进行身份验证,这就是为什么在上一节中我们使用 token 作为用于执行请求的函数的参数。

我们应该添加以下代码来生成 token 。请注意,我们使用 adal npm 包来更轻松地完成此操作,调用 AuthenticationContext 对象的 acquireTokenWithClientCredentials 方法。此外,我们还有一些常量需要使用之前获得的客户端 ID 和 key 以及租户名称进行更新。

var adal = require('adal-node');

const TENANT = "{tenant-name-here}.onmicrosoft.com";
const CLIENT_ID = "{Application-id-here}";
const CLIENT_SECRET = "{Application-key-here}";

function getToken() {
return new Promise((resolve, reject) => {
const authContext = new adal.AuthenticationContext(`https://login.microsoftonline.com/${TENANT}`);
authContext.acquireTokenWithClientCredentials(GRAPH_URL, CLIENT_ID, CLIENT_SECRET, (err, tokenRes) => {
if (err) { reject(err); }
resolve(tokenRes.accessToken);
});
});

希望有帮助。

关于Javascript AzureAd 使用休息服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680211/

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