你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 .NET 的 Azure 混合现实 身份验证客户端库 - 版本 1.2.0

混合现实服务(如 Azure 空间定位点、Azure 远程渲染等)使用 混合现实 安全令牌服务 (STS) 进行身份验证。 此包支持从 STS 交换混合现实帐户凭据,该令牌可用于访问混合现实服务。

源代码 | 包 (NuGet)

混合现实服务身份验证关系图

入门

安装包

使用 NuGet 安装适用于 .NET 的 Azure 混合现实 身份验证客户端库:

dotnet add package Azure.MixedReality.Authentication

添加包引用:

<PackageReference Include="Azure.MixedReality.Authentication" Version="1.0.0" />

先决条件

验证客户端

混合现实服务支持几种不同形式的身份验证:

  • 帐户密钥身份验证
    • 使用帐户密钥可以快速开始使用混合现实服务。 但是,在将应用程序部署到生产环境之前,我们建议你将应用更新为使用 Azure AD 身份验证。
  • Azure Active Directory (AD) 令牌身份验证
    • 如果你正在生成企业应用程序,并且你的公司使用 Azure AD 作为其标识系统,则你可以在应用中使用基于用户的 Azure AD 身份验证。 然后,使用现有的 Azure AD 安全组授予对混合现实帐户的访问权限。 还可以直接向组织中的用户授予访问权限。
    • 否则,我们建议从支持你的应用的 Web 服务获取 Azure AD 令牌。 建议将此方法用于生产应用程序,因为它可避免在客户端应用程序中嵌入用于访问混合现实服务的凭据。

有关详细说明和信息,请参阅 此处

身份验证示例

下面是一些常见身份验证方案的示例,但可以在 Azure.Identity 中找到更多示例和信息。

使用帐户密钥身份验证进行身份验证

MixedRealityStsClient使用接受 的AzureKeyCredential构造函数重载通过 混合现实 STS 配置帐户密钥身份验证:

AzureKeyCredential keyCredential = new AzureKeyCredential(accountKey);
MixedRealityStsClient client = new MixedRealityStsClient(accountId, accountDomain, keyCredential);

注意: 不建议 将帐户密钥身份验证用于生产应用程序。

使用 AAD 客户端机密进行身份验证
TokenCredential aadCredential = new ClientSecretCredential(tenantId, clientId, clientSecret, new TokenCredentialOptions
{
    AuthorityHost = new Uri($"https://login.microsoftonline.com/{tenantId}")
});

MixedRealityStsClient client = new MixedRealityStsClient(accountId, accountDomain, aadCredential);
使用设备代码身份验证对用户进行身份验证
Task deviceCodeCallback(DeviceCodeInfo deviceCodeInfo, CancellationToken cancellationToken)
{
    Debug.WriteLine(deviceCodeInfo.Message);
    Console.WriteLine(deviceCodeInfo.Message);
    return Task.FromResult(0);
}

TokenCredential deviceCodeCredential = new DeviceCodeCredential(deviceCodeCallback, tenantId, clientId, new TokenCredentialOptions
{
    AuthorityHost = new Uri($"https://login.microsoftonline.com/{tenantId}"),
});

MixedRealityStsClient client = new MixedRealityStsClient(accountId, accountDomain, deviceCodeCredential);

AccessToken token = await client.GetTokenAsync();

有关使用设备代码身份验证流的详细信息,请参阅 此处

使用 DefaultAzureCredential 进行交互式身份验证

DefaultAzureCredential 对象与 结合使用 includeInteractiveCredentials: true ,以使用默认交互式身份验证流:

TokenCredential credential = new DefaultAzureCredential(includeInteractiveCredentials: true);

MixedRealityStsClient client = new MixedRealityStsClient(accountId, accountDomain, credential);

关键概念

MixedRealityStsClient

MixedRealityStsClient是用于访问 混合现实 STS 以获取访问令牌的客户端库。

从混合现实 STS 获取的令牌的生存期为 24 小时

线程安全

我们保证所有客户端实例方法都是线程安全的,并且相互独立, (准则) 。 这可确保重用客户端实例的建议始终是安全的,即使跨线程也是如此。

其他概念

客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | 嘲笑 | 客户端生存期

示例

检索访问令牌

AzureKeyCredential keyCredential = new AzureKeyCredential(accountKey);
MixedRealityStsClient client = new MixedRealityStsClient(accountId, accountDomain, keyCredential);

AccessToken token = await client.GetTokenAsync();

有关更复杂的身份验证方案,请参阅 上面的 身份验证示例。

在混合现实客户端库中使用访问令牌

某些混合现实客户端库可能会接受访问令牌来代替凭据。 例如:

// GetMixedRealityAccessTokenFromWebService is a hypothetical method that retrieves
// a Mixed Reality access token from a web service. The web service would use the
// MixedRealityStsClient and credentials to obtain an access token to be returned
// to the client.
AccessToken accessToken = await GetMixedRealityAccessTokenFromWebService();

SpatialAnchorsAccount account = new SpatialAnchorsAccount(accountId, accountDomain);
SpatialAnchorsClient client = new SpatialAnchorsClient(account, accessToken);

注意:上述 SpatialAnchorsClient 用法是假设的,可能不会反映实际库。 请参阅所使用的客户端库的文档,确定是否以及如何支持此功能。

故障排除

后续步骤

支持使用 混合现实 身份验证进行身份验证的客户端库

支持混合现实身份验证的库即将推出。

贡献

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com

提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。