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

Azure Function运行Get-AzureAD命令的认证方案咨询(对接PowerApps)

解决方案:Azure Functions + PowerShell 调用 Get-AzureAD 认证配置

最佳方案:系统托管标识(推荐)

这是最适合新手的方案,无需手动管理凭据,Azure自动维护身份,安全且低维护。

步骤1:给Function App启用系统托管标识

  • 登录Azure Portal,打开你的Function App
  • 进入标识 > 系统分配,将状态设为开启,点击保存

步骤2:为托管标识分配Azure AD权限

  • 进入Azure AD > 角色和管理员 > 角色
  • 搜索并选择目录读者(或更精细的User.Read.All应用权限,若仅需读取用户信息)
  • 点击添加成员,选择你的Function App的托管标识(名称和Function App一致),完成添加

步骤3:编写PowerShell函数代码

使用托管标识自动认证,无需手动传入凭据:

using namespace System.Net

param($Request, $TriggerMetadata)

# 用托管标识连接Azure AD
Connect-AzureAD -Identity

# 可根据PowerApp传入的参数动态获取用户(示例:按UPN查询)
$targetUpn = $Request.Query.Upn
if (-not $targetUpn) {
    $targetUpn = "defaultuser@yourdomain.com" # 替换为默认用户UPN
}

$user = Get-AzureADUser -Filter "UserPrincipalName eq '$targetUpn'"
$displayName = $user.DisplayName

# 返回响应给PowerApp
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = @{ DisplayName = $displayName }
})

步骤4:配置Function App的访问控制

  • 进入Function App > 认证 > 添加身份提供者
  • 选择Microsoft,配置为仅允许你的组织内部用户访问
  • 这样PowerApp的已认证用户可以直接调用Function,无需额外凭据

关于其他方案的说明

能否复用PowerApps的用户凭据?

不行。PowerApps的用户凭据属于终端用户身份,若Function复用该身份,需要配置委托权限,且需处理token刷新逻辑,不仅代码复杂,还存在过度授权风险(Function将以用户权限运行),不推荐。

自签名证书方案

适合跨租户或需要自定义服务主体的场景,但需手动创建服务主体、生成/上传证书、维护证书有效期,步骤繁琐,新手不建议优先选择。


内容的提问来源于stack exchange,提问作者Jan Vermeren

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:16:22