我正在使用New-AzureADApplicationKeyCredential为应用程序创建KeyCredentials。文件
首先,我对指纹进行base64编码
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import("C:UsersPFullerDesktopabc.cer")
...
$bin = $cer.GetCertHash()
$base64Thumbprint = [System.Convert]::ToBase64String($bin)
...
New-AzureADApplicationKeyCredential -ObjectId <id>
-CustomKeyIdentifier $base64Thumbprint
-Type AsymmetricX509Cert
-Usage Verify -Value $base64Value
但AAD清单上的结果是双基64编码:
"keyCredentials": [
{
"customKeyIdentifier": "base64(base64Thumbprint)",
...
}
],
根据微软身份平台应用认证证书凭证
customKeyIdentifier只能base64编码一次并存储在清单的keyCredentials上。
我是不是滥用了这个命令或者这里出了什么问题?因为在我将清单转换为base64编码一次之后,每件事都能正常工作。
谢谢你的帮助。
根据我的测试,当我们使用New-AzureADApplicationKeyCredential
为应用程序创建KeyCredential时,customKeyIdentifier
和value
都是双基64编码的。
之后,我使用以下代码来获得带有此证书的访问令牌:
var app = ConfidentialClientApplicationBuilder.Create("{clientId}")
.WithAuthority(AzureCloudInstance.AzurePublic, "{tenantId}")
.WithCertificate(cer)
.Build();
var result = await app.AcquireTokenForClient(new[] { "https://graph.microsoft.com/.default" }).ExecuteAsync();
Console.WriteLine(result.AccessToken);
我发现我们可以成功地获得具有正确角色的访问令牌。
所以我认为New-AzureADApplicationKeyCredential
base64编码customKeyIdentifier
和value
还有一段时间。但当我们使用X509Certificate获取访问令牌时,它也能正确处理它们。