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

如何使用PowerShell向需微软账号登录的Azure App发起非交互式Web请求

非交互式调用Azure保护站点的操作步骤

1. 配置Azure应用注册

  • 登录Azure门户,找到你的myApp对应的应用注册资源,记录下客户端ID、租户ID两个参数
  • 进入「证书和密码」页面,新建1个客户端密码,保存生成的密码值(仅创建时可见,务必妥善存储)
  • 进入「公开API」页面,确认你创建的myscope权限,额外新增应用权限类型的同范围权限,完成后点击「授予管理员同意」完成权限生效

2. 编写PowerShell脚本实现自动请求

# 替换为你自己的实际配置参数
$clientId = "myApp的客户端ID"
$clientSecret = "你刚创建的客户端密码"
$tenantId = "Azure AD租户ID"
$scope = "api://$clientId/myscope/.default" # 客户端凭据流需追加.default后缀
$targetSiteUrl = "你要请求的网站地址myurl"

# 非交互式获取访问令牌
$tokenReqBody = @{
    Grant_Type    = "client_credentials"
    Client_Id     = $clientId
    Client_Secret = $clientSecret
    Scope         = $scope
}
$tokenRes = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" -Method Post -Body $tokenReqBody
$accessToken = $tokenRes.access_token

# 发起目标网站请求
Invoke-RestMethod -Uri $targetSiteUrl -Headers @{"authorization" = "Bearer $accessToken"}

可选:更安全的证书认证方案(避免明文存储客户端密码)

  • 在应用注册的「证书和密码」页面上传公钥证书(.cer格式)
  • 本地PowerShell从证书存储读取对应私钥证书,替换客户端密码参数即可完成认证,安全性更高:
# 按指纹读取本地存储的证书
$cert = Get-ChildItem Cert:\CurrentUser\My\你的证书指纹 | Select-Object -First 1

# 用证书发起令牌请求,无需传客户端密码
$tokenReqBody = @{
    Grant_Type             = "client_credentials"
    Client_Id              = $clientId
    Client_Certificate     = $cert
    Scope                  = $scope
}

备注:如果必须模拟特定用户身份发起请求,可使用ROPC流,将Grant_Type改为password,额外传入Username和Password参数即可。该流不支持启用MFA的账号,安全性远低于客户端凭据流,仅推荐测试场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:06:03