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

Service Principal的preferredTokenSigningKeyThumbprint与证书关联匹配问题

解决preferredTokenSigningKeyThumbprint与keyCredentials证书指纹不匹配的问题

问题根源

preferredTokenSigningKeyThumbprint返回的是十六进制字符串格式的证书指纹,而你当前对keyCredentials.CustomKeyIdentifier使用[System.Convert]::ToBase64String()转换,得到的是Base64格式的字符串,两种格式天然不匹配。

修复后的PowerShell函数

把ThumbPrint字段的转换逻辑改成将字节数组转为十六进制字符串,就能和preferredTokenSigningKeyThumbprint的格式统一:

Function Get-MgEnterpriseAppSamlInfo {
    try {
        $servicePrincipalsList = Get-MgServicePrincipal -Filter "preferredSingleSignOnMode eq 'saml'"
        $servicePrincipals = @()

        foreach ($ServicePrincipal in $servicePrincipalsList) {
            foreach ($Cert in $ServicePrincipal.keyCredentials) {
                # 将CustomKeyIdentifier字节数组转为十六进制指纹字符串
                $thumbprintHex = -join ($Cert.CustomKeyIdentifier | ForEach-Object { $_.ToString("X2") })
                
                $servicePrincipals += [PSCustomObject]@{
                    DisplayName                        = $ServicePrincipal.DisplayName
                    KeyType                            = 'SAML {0} Certificate' -f $cert.usage
                    ExpirationDate                     = $Cert.endDateTime
                    DaysUntilExpiration                = (($Cert.EndDateTime) - (Get-Date) | Select-Object -ExpandProperty TotalDays) -as [int]
                    preferredTokenSigningKeyThumbprint = $ServicePrincipal.preferredTokenSigningKeyThumbprint
                    ThumbPrint                         = $thumbprintHex
                    Description                        = $Cert.DisplayName
                }
            }
        }

        Write-Output $servicePrincipals | Sort-Object DaysUntilExpiration
    } catch {
        Write-Error $_.Exception.Message
    }
}

关联首选签名证书的方法

修复格式后,直接对比结果中的preferredTokenSigningKeyThumbprint和ThumbPrint字段值:

  • 当两者值完全相等时,该条记录对应的证书就是当前Service Principal设置的首选令牌签名证书
  • 注意:一个Service Principal可能有多个证书(Sign/Verify用途),只有签名用途(KeyType为SAML Sign Certificate)且指纹匹配的才是有效首选签名证书

内容的提问来源于stack exchange,提问作者Claus-Ole Olsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:54:55