我正在尝试使用ClientCertificateCredential(在C#中)对Azure AD应用程序进行身份验证:
using Azure.Identity;
var credential = new ClientCertificateCredential("TenantId", "AppId", @"path\to\cert.pfx");
在应用程序上,我已经将证书的SNI配置为受信任的证书:
"trustedCertificateSubjects": [
{
"authorityId": "auth id ...",
"subjectName": "cert subject name",
"revokedCertificateIdentifiers": []
}
]
我已经验证了所有的值和配置。然而,我总是遇到以下错误:
Azure.Identity.AuthenticationFailedException HResult= 0x 80131500消息=ClientCertificateCredential身份验证失败:配置问题正在阻止身份验证-有关详细信息,请查看来自服务器的错误消息。您可以在应用程序注册门户中修改配置。详情请参见https://aka.ms/msal-net-invalid-client。原始例外:AADSTS 700027:用于对客户端Assert进行签名的具有标识符的证书未在应用程序上注册。[原因-找不到密钥。,客户端使用的密钥的指纹:“”,请访问Azure门户、Graph Explorer或直接使用MS Graph查看应用ID“”的配置键。请查看www.example.com上的文档https://docs.microsoft.com/en-us/graph/deployments以确定相应的服务端点,并https://docs.microsoft.com/en-us/graph/api/application-get?view=graph-rest-1.0&tabs=http以构建查询请求URL,例如“https:graph.microsoft.com/beta/applications/”]。或者,可以在应用上配置SNI。请确保使用MSAL的WithSendX 5C()方法将客户端Assert与JWT标头中的x5 c声明一起发送,以便Azure Active Directory可以验证正在使用的证书。
我已经检查了所有提供的链接以及其他文件,没有一个有助于解决这个问题。有什么见解或方向来解决这个问题?
2条答案
按热度按时间ctzwtxfj1#
如果
.cer
证书未上载到Azure AD应用程序证书和机密刀片中,或者运行代码的计算机中不存在.pfx
证书,则通常会发生错误。当我无法在Azure AD应用程序证书和机密刀片中上传任何证书时,我遇到了相同的错误:
因此,要解决此错误,请在证书和机密刀片中上传**
.cer
**证书:清单如下所示:
确保运行代码的机器中存在**
.pfx
**证书:对于 sample,我使用下面的代码生成了访问令牌来验证应用程序:
访问令牌生成成功:
mepcadol2#
找到解决方案:[FEATURE REQ] DefaultAzureCredential should send x5c claim for app authentication
代码示例(为我成功工作):