代理认证的 Azure 身份插件
此软件包为 JavaScript 提供了 Azure 身份库的插件(@azure/identity(a) 能够使用诸如下列认证经纪人: 瓦姆语。 。 。 .
认证中介是一个在用户的机器上运行的应用程序,管理连接账户的认证握手和维护令牌. 目前,仅支持Windows认证经纪人Web账户管理器(WAM).
源代码 | 样本 | API 参考文件 | 微软 Entra 标识文档
开始
import { useIdentityPlugin } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";
useIdentityPlugin(nativeBrokerPlugin);
先决条件
- 一个 Azure 订阅。 。 。 .
注:用于地方发展
@azure/identity-broker,您可能需要安装额外的工具. 节点-gyp 用于编译 加词 用于访问系统 API。 安装需求列于 节点- gyp 读取。 。 。 .
在 Linux 上, 库使用 libsecret 所以你可能需要安装它。 根据您的分布, 您需要运行以下命令 :
- 德比安/乌班图:
sudo apt-get install libsecret-1-dev - 红帽型:
sudo yum install libsecret-devel - Arch Linux : (原始内容存档于2019-09-29)
sudo pacman -S libsecret
[注] 经纪认证目前只在Windows和Linux上支持. macOS还没有支持.
安装软件包
此软件包被设计为JavaScript与Azure身份一起使用. 安装两者 @azure/identity 使用 npm数字 :
npm install --save @azure/identity
npm install --save @azure/identity-broker
支持的环境
JavaScript的Azure身份插件支持从v20开始的Node.js的稳定(甚至编号)版本. 虽然插件可能运行在其他节点.js版本中,但不能保证支持. @azure/identity-broker 没有 支持浏览器环境.
关键概念
如果这是你第一次使用 @azure/identity 或微软Entra ID,我们建议您阅读 使用 @azure/identity 使用 Microsoft Entra ID 软件 先说 该文件将使您更深入地了解平台以及如何正确配置您的 Azure 账户 .
父窗口控件
与经纪人通过验证时 InteractiveBrowserCredential,需要一个父窗口控件,以确保在请求窗口上正确显示认证对话框。 在设备上的图形用户界面中,一个窗口手柄是操作系统分配给每个窗口的独特标识符. 对于Windows操作系统来说,这个手柄是一个整数值,作为特定窗口的参考.
微软账户( MSA) 通过
微软账户(MSA)是用户为访问微软服务而创建的个人账户. MSA通过是一种遗留的配置,使用户能够获得通常不接受MSA登录的资源的代号. 该功能仅供第一人的申请使用. 使用配置用于使用 MSA 通道的应用程序认证的用户可以设置 legacyEnableMsaPassthrough 改为 true 内部 InteractiveBrowserCredentialNodeOptions.brokerOptions 允许这些个人账户被WAM列出.
重定向 URIs
Microsoft Entra应用程序依赖重定向URI来确定用户登录后发送认证响应的地点. 为了能够通过WAM进行中介认证,应当向应用程序注册符合以下模式的重定向URI:
ms-appx-web://Microsoft.AAD.BrokerPlugin/{client_id}
Azure 身份插件
截止 @azure/identity 2.0.0版本,JavaScript的身份客户端库包含一个插件API. 此套件 (@azure/identity-broker)导出一个插件对象,您必须将其作为参数传递到顶层 useIdentityPlugin 函数从 @azure/identity 软件包。 在您的程序中启用本地经纪人如下 :
import { useIdentityPlugin, InteractiveBrowserCredential } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";
useIdentityPlugin(nativeBrokerPlugin);
const credential = new InteractiveBrowserCredential({
brokerOptions: {
enabled: true,
parentWindowHandle: new Uint8Array(0), // This should be a handle to the parent window
},
});
打电话后 useIdentityPlugin,将本地经纪人插件注册到 @azure/identity 软件包,并在 InteractiveBrowserCredential 支持 WAM 代理认证。 这个证书 brokerOptions 在构建器选项中.
页:1页:1 @azure/identity 4.1.1.0-β.1版本, DefaultAzureCredential 通过 Windows 网络账户管理器为登录提供支持。 在您的程序中启用本地经纪人如下 :
import { useIdentityPlugin, DefaultAzureCredential } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";
useIdentityPlugin(nativeBrokerPlugin);
const credential = new DefaultAzureCredential();
实例
插件注册后,您可以通过路过启用 WAM 代理认证 brokerOptions 带有 enabled 设置为 true 给一个证书建筑师。 在下面的例子中,我们使用 InteractiveBrowserCredential。 。 。 .
import { useIdentityPlugin, InteractiveBrowserCredential } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";
useIdentityPlugin(nativeBrokerPlugin);
const credential = new InteractiveBrowserCredential({
brokerOptions: {
enabled: true,
parentWindowHandle: new Uint8Array(0), // This should be a handle to the parent window
},
});
// We'll use the Microsoft Graph scope as an example
const scope = "https://graph.microsoft.com/.default";
// Print out part of the access token
console.log((await credential.getToken(scope)).token.substring(0, 10), "...");
关于使用 Electron app 检索窗口手柄的完整实例,请参见 此样本。 。 。 .
使用默认账户登录
当 useDefaultBrokerAccount 选项设定为 true,证书会试图默默使用默认的经纪人账户. 如果使用默认账户失败,证书将回归交互式认证.
import { useIdentityPlugin, InteractiveBrowserCredential } from "@azure/identity";
import { nativeBrokerPlugin } from "@azure/identity-broker";
useIdentityPlugin(nativeBrokerPlugin);
const credential = new InteractiveBrowserCredential({
brokerOptions: {
enabled: true,
useDefaultBrokerAccount: true,
parentWindowHandle: new Uint8Array(0), // This should be a handle to the parent window
},
});
// We'll use the Microsoft Graph scope as an example
const scope = "https://graph.microsoft.com/.default";
// Print out part of the access token
console.log((await credential.getToken(scope)).token.substr(0, 10), "...");
解决问题
参见 Azure 身份 解决问题指南 详细介绍如何诊断各种故障情况.
日志
允许伐木可能有助于发现有关失败的有用信息。 为了查看 HTTP 请求和回复的日志,设置 AZURE_LOG_LEVEL 环境变量改为 info。或者,可以在运行时拨打 setLogLevel 输入 @azure/logger数字 :
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
今后的步骤
提供反馈
如果你遇到错误或有建议,请 打开一个问题。 。 。 .
捐款
如果你想为图书馆捐钱,请看 贡献指南 学习如何构建和测试密码.