Azure AD应用注册无法设置Sign类型密钥凭据的问题咨询
Azure AD应用注册添加Sign类型密钥凭据报错解决方案
报错根因
usage=Sign类型的密钥凭据不支持配置在应用注册(Application)对象上,仅支持配置在对应服务主体(Service Principal,即Azure门户内的企业应用)对象上。
应用注册默认仅支持usage=Verify类型的凭据,用于Azure AD验证应用发起请求的签名合法性;Sign类型凭据是供Azure AD侧使用,用于向第三方服务签发SAML断言、令牌时做签名,因此只能配置在服务主体层面。
解决方案(PowerShell路径)
- 替换原逻辑中查询应用注册ObjectID的步骤,改为查询对应服务主体的ObjectID:
# 替换为你的应用注册客户端ID(Client ID) $appClientId = "<your-app-client-id>" $servicePrincipal = Get-AzureADServicePrincipal -Filter "appId eq '$appClientId'" $spObjectId = $servicePrincipal.ObjectId
- 使用服务主体的密钥凭据配置命令替换原应用注册配置命令:
# 证书读取逻辑保持不变 $cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $cer.Import("<path-to-certificate>") $bin = $cer.GetRawCertData() $base64Value = [System.Convert]::ToBase64String($bin) $bin = $cer.GetCertHash() $base64Thumbprint = [System.Convert]::ToBase64String($bin) # 使用服务主体配置命令添加Sign类型凭据 New-AzureADServicePrincipalKeyCredential ` -ObjectId $spObjectId ` -CustomKeyIdentifier $base64Thumbprint ` -Type AsymmetricX509Cert ` -Usage Sign ` -Value $base64Value ` -StartDate $cer.GetEffectiveDateString() ` -EndDate $cer.NotAfter.ToString()
其他配置路径注意事项
- 若通过Azure Portal配置,不要直接修改应用注册的Manifest,需进入对应企业应用的「单一登录」配置页,在SAML证书板块上传签名证书即可。
- 若你要配置的是SAML应用签名证书,需先完成SAML SSO的基础配置,否则依然会触发配置失败报错。
- 配置前请确认你用到的自定义域名已在Azure AD租户中完成验证,未验证域名会限制签名凭据的配置。
内容的提问来源于stack exchange,提问作者JoJa
相关产品推荐
相关产品推荐

