如何通过Graph API与PowerShell的Invoke-RestMethod获取应用代理SSL证书信息
获取企业应用Application Proxy SSL证书信息(仅Graph API + PowerShell Invoke-RestMethod)
核心思路
直接调用Microsoft Graph API查询企业应用(servicePrincipal)的applicationProxy属性,其中customDomainSslCertificates数组包含了Application Proxy自定义域名的SSL证书详情,从中提取Subject、证书指纹(Thumbprint)和过期时间。
所需权限
需要以下任一应用权限或委派权限:
Application.Read.AllDirectory.Read.All
PowerShell实现步骤与脚本
1. 获取Graph API访问令牌
以客户端凭据流为例(适合自动化脚本):
# 配置参数 $tenantId = "你的租户ID" $clientId = "你的应用注册客户端ID" $clientSecret = "你的应用注册客户端密钥" $tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" # 请求令牌 $tokenParams = @{ grant_type = "client_credentials" client_id = $clientId client_secret = $clientSecret scope = "https://graph.microsoft.com/.default" } $tokenResponse = Invoke-RestMethod -Uri $tokenEndpoint -Method Post -Body $tokenParams $accessToken = $tokenResponse.access_token
2. 调用Graph API查询证书信息
筛选启用Application Proxy的企业应用,并展开证书相关属性:
$graphApiEndpoint = "https://graph.microsoft.com/v1.0/servicePrincipals`?`$filter=appId ne null and applicationProxy/isEnabled eq true&`$expand=applicationProxy(`$expand=customDomainSslCertificates)" $headers = @{ Authorization = "Bearer $accessToken" ContentType = "application/json" } $appProxyApps = Invoke-RestMethod -Uri $graphApiEndpoint -Method Get -Headers $headers
3. 解析提取目标字段
遍历返回结果,提取每个应用的证书详情:
foreach ($app in $appProxyApps.value) { Write-Host "企业应用名称: $($app.displayName)" -ForegroundColor Cyan if ($app.applicationProxy.customDomainSslCertificates) { foreach ($cert in $app.applicationProxy.customDomainSslCertificates) { Write-Host "--- 证书信息 ---" Write-Host "Subject: $($cert.subjectName)" Write-Host "证书指纹: $($cert.thumbprint)" Write-Host "过期时间: $([datetime]$cert.expirationDate)" } } else { Write-Host "该应用未配置自定义域名SSL证书" -ForegroundColor Yellow } Write-Host "`n" }
补充说明
- 若查询单个企业应用,可将端点改为
GET /servicePrincipals/{servicePrincipalId}?$expand=applicationProxy($expand=customDomainSslCertificates),替换{servicePrincipalId}为目标应用的服务主体ID。 - 返回的
expirationDate为ISO 8601格式字符串,可通过[datetime]转换为PowerShell日期对象。
内容的提问来源于stack exchange,提问作者kila
相关产品推荐
相关产品推荐

