You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure已加入的HoloLens 2获取AAD Token用于API认证?

获取HoloLens 2上已缓存的AAD Token

核心类与方法

你需要使用Windows Runtime的Windows.Security.Authentication.Web.Core命名空间下的类,核心组件如下:

  • WebAuthenticationCoreManager:管理系统级身份验证会话,可直接访问已登录用户的缓存Token
  • WebTokenRequest:定义Token请求的关键参数(如AAD租户ID、应用客户端ID、目标API资源URI)

实现步骤

  1. 配置应用权限
    在Package.appxmanifest中添加enterpriseAuthentication和privateNetworkClientServer权限,确保应用能访问系统身份验证服务。

  2. 构建Token请求

using Windows.Security.Authentication.Web.Core;
using Windows.Security.Credentials;

// 替换为你的AAD参数
string tenantId = "你的租户ID";
string clientId = "你的应用客户端ID";
string targetResource = "目标API的资源URI(如https://graph.microsoft.com)";

// 获取AAD身份验证提供器
var authProvider = WebAuthenticationCoreManager.FindAccountProviderAsync("https://login.microsoft.com", tenantId).GetAwaiter().GetResult();

// 构建静默Token请求(不弹出登录界面)
var tokenRequest = new WebTokenRequest(authProvider, targetResource, clientId);
tokenRequest.Properties.Add("prompt", "silent");
  1. 获取缓存Token
// 获取设备上已登录的AAD账户
var accounts = WebAuthenticationCoreManager.FindAllAccountsAsync(authProvider).GetAwaiter().GetResult();
if (accounts.Count > 0)
{
    var tokenResult = WebAuthenticationCoreManager.GetTokenSilentlyAsync(tokenRequest, accounts[0]).GetAwaiter().GetResult();
    if (tokenResult.ResponseStatus == WebTokenRequestStatus.Success)
    {
        string cachedAadToken = tokenResult.ResponseData[0].Token;
        // 用该Token进行API认证
    }
    else
    {
        // 缓存中无有效Token,需触发重新登录流程
    }
}

关键说明

  • 静默模式:设置prompt=silent后,会优先从系统缓存读取Token,仅当Token过期或不存在时请求失败,避免干扰用户操作
  • 账户匹配:FindAllAccountsAsync返回设备上所有已登录的AAD账户,可根据需求筛选目标账户
  • 前置条件:确保应用已在AAD中完成注册,客户端ID、资源URI配置正确,且HoloLens设备已加入Azure AD或用户已完成AAD登录

内容的提问来源于stack exchange,提问作者Fabian H.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:50:30