Get-AzAccessToken获取令牌失败:SharedTokenCacheCredential认证不可用
解决PowerShell获取Azure AD认证Function App令牌失败问题
问题描述
尝试通过PowerShell获取访问Azure AD认证Function App的令牌,执行命令:
Connect-AzAccount -Subscription <subscriptionID> -TenantId <tenantID> Get-AzAccessToken -ResourceUrl "<resourceURL>"
触发错误:
Get-AzAccessToken : SharedTokenCacheCredential authentication unavailable. Token acquisition failed for user <username>. Ensure that you have authenticated with a developer tool that supports Azure single sign on.
浏览器和Postman可正常访问该Function App,且已配置未认证请求返回302重定向。
解决方案
1. 核对ResourceUrl的正确性
Function App的Azure AD认证对应的资源标识符(ResourceUrl)通常是以下两种之一:
- Function App关联应用注册的客户端ID(可在Azure门户的应用注册页面查看)
- Function App的默认受众URI:
https://<你的FunctionApp名称>.azurewebsites.net
若ResourceUrl填写错误,会直接导致令牌获取失败,先确认该值准确无误。
2. 采用交互式设备认证登录
替换原登录命令,通过设备认证方式确保令牌写入共享缓存:
Connect-AzAccount -Subscription <subscriptionID> -TenantId <tenantID> -UseDeviceAuthentication
执行后按照提示在浏览器完成登录操作,再重新运行Get-AzAccessToken命令。
3. 切换使用Azure CLI获取令牌
如果Az模块的共享缓存问题无法解决,可改用Azure CLI(需提前安装):
az login --tenant <tenantID> --subscription <subscriptionID> az account get-access-token --resource <resourceURL>
该命令会直接返回可用的访问令牌。
4. 检查Function App的认证受众配置
确认Function App的Azure AD认证设置中,允许的令牌受众包含你指定的ResourceUrl,或设置为默认值https://azurefunctions.net,避免因受众不匹配导致令牌无效。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

