- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我已在 Powershell 版本 7 中安装了 AzureAD 模块,但无法执行 Connect-AzureAD Cmdlet。 有什么想法吗? PS C:\Users\User> Get-Inst
我有一个 WebApplication(例如 https://test.com/webapp1 处的 WebApp1)。 WebApp1 要求用户使用 AzureAD 进行身份验证(TenantId:
我正在尝试在 ADO 中的 azure powershell 任务中执行 Get-AzureADServicePrincipal。我需要获取服务主体,然后连接以获取 ServicePrincipalI
我正在尝试在 ADO 中的 azure powershell 任务中执行 Get-AzureADServicePrincipal。我需要获取服务主体,然后连接以获取 ServicePrincipalI
我想使用 Azuread Provider 创建应用程序注册,并使用 applictionid 输出作为我的应用程序服务中的配置。每次我计划时,我都会收到一条错误消息。如果我删除配置行,一切正常。 我
我正在尝试 AzureAD 试用版,以便使用 Microsoft 产品提供的 API(我也注册了高级试用版)。 我已成功注册我的 iOS 应用程序,但每当我尝试添加权限时,它都会在“选择权限”处显示雨
我已经在门户中设置了我的 AzureAD,以及一个使用 AD 来验证以下 Microsoft 说明的应用程序服务。 我制作了一个使用此授权的 .net core 应用程序。它可以在我的本地主机上运行。
我已经在门户中设置了我的 AzureAD,以及一个使用 AD 来验证以下 Microsoft 说明的应用程序服务。 我制作了一个使用此授权的 .net core 应用程序。它可以在我的本地主机上运行。
我正在开发一个管道,用于从 Azure Active Directory 检索所有条件访问策略并创建 csv 列表 我的问题是,我发现一个命令 get-azureadmsconditionalacce
RestAPI:我有一个使用 AzureAd 身份验证运行 Asp Core 的 Rest API。 WebApp:我有一个单独的 Web 应用程序,运行 Asp Core 作为后端,并使用 Java
我正在尝试使此命令在我的 MAC 操作系统上运行,甚至安装我在其他博客中找到的所有模块,例如 AzureAD、AzureADPreview。我仍然收到同样的消息。有人可以给我一些有关修复的线索吗? C
尝试通过 powershell 将一些 Azure AD 组从静态更改为动态(有 75 个组,因此我们需要以某种方式执行此操作) 最初我试图使用此脚本从 TXT 中的列表自动运行它: $groupli
我们正在使用MS Graph API,想检查某个组中用户的变化。目前我们通过以下查询获取用户: https://graph.microsoft.com/v1.0/groups/group-id/mem
我正在运行脚本以将新用户添加到 Azure AD $AzureADConnection = Connect-AzureAD $AdminEmail = $AzureADConnection.Accou
我尝试使用命令 Connect-AzureAD 通过 PowerShell 连接到 AzureAD,但单点登录时出现空白页面。 但是,当我使用命令 Connect-MsolService 时,它就像一
我们在自己的服务器上有应与 SharePoint Online 一起使用的应用程序。要访问 SP Online,我们需要拥有应用 token / secret - 这很好。 我想知道是否有可能通过此
我有一些公司网站提供一些受 Azure AD 保护的信息。这在浏览器中工作得很好,但我想在命令行上创建一些自动化。 如果我从浏览器复制 JWT 并在 Authorization: Bearer hea
如何使用 powershell 设置服务主体的回复 URL。当我检查管理门户时,以下命令不会向该字段添加任何内容。 $aa = new-AzureADApplication -DisplayName“
我有 React 前端应用程序和 AWS lambda 后端。我已经使用 MSAL 将 AzureAD 身份验证集成到我的 React 应用程序中。我想澄清一些事情 用户登录前端后,我想调用我的后端
使用 AzureAD 模块,我可以使用 Get-AzureADServicePrincipalOAuth2PermissionGrant cmdlet 检索服务主体的所有委派权限。但是,我找不到类似的
我是一名优秀的程序员,十分优秀!