gpt4 book ai didi

azure - 使用 KeyVault 和 Azure PowerShell 证书身份验证创建 Azure AD 应用程序

转载 作者:行者123 更新时间:2023-12-03 03:08:33 26 4
gpt4 key购买 nike

我尝试使用 Azure PowerShell 证书身份验证在 Azure AD 中创建应用程序,以下是 Powershell 代码段:

Login-AzureRmAccount

$certPassword = ConvertTo-SecureString $CertPassword -AsPlainText -Force

$x509 = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $certPath,$certPassword

$credValue = [System.Convert]::ToBase64String($x509.GetRawCertData())

$adapp = New-AzureRmADApplication -DisplayName $ApplicationName -HomePage $URL -IdentifierUris $URL -CertValue $credValue -StartDate $startDate -EndDate $endDate

$sp = New-AzureRmADServicePrincipal -ApplicationId $adapp.ApplicationId

Set-AzureRmKeyVaultAccessPolicy -VaultName $VaultName -ServicePrincipalName $sp.ServicePrincipalNames[1] -PermissionsToKeys all –PermissionsToSecrets all -ResourceGroupName $ResourceGroupName

Azure AD 应用程序已成功创建,但是对于具有证书身份验证的 Azure AD 应用程序,创建后 keyCredentials 中的 customKeyIdentifier 和值为 null,这是我从 Azure 门户下载的应用程序 list 的部分:

"keyCredentials": [{
"customKeyIdentifier": null,
"endDate": "2018-01-25T11:55:35.7680698Z",
"keyId": "ca1e536c-2220-478b-af73-1198d125bb5f",
"startDate": "2017-01-25T11:55:35.7680698Z",
"type": "AsymmetricX509Cert",
"usage": "Verify",
"value": null
} ]

该证书是使用本地生成的 makecert 命令创建的自签名证书。我使用的是 Powershell 版本 2.0.1

使用应用程序 ID 和指纹检索 token 的 C# 代码

public static async Task GetAccessToken(string authority, string resource, string scope) { var context = new AuthenticationContext(authority, TokenCache.DefaultShared); var result = await context.AcquireTokenAsync(resource, AssertionCert); return result.AccessToken; }

此代码在 var 结果处出错,显示“Keyset does not exit”

有什么办法可以解决这个问题吗?

谢谢:)

最佳答案

你看过这里的答案吗?

Create a Application in Azure AD with Azure PowerShell Certificate authentication

在评论中,他提到 CustomKeyIdentifier 为 null 对于身份验证并不重要。

无论空值如何,您是否尝试进行身份验证?\

编辑:如果您想为自己拥有的公共(public)证书生成指纹,可以使用以下 powershell cmdlet 来执行此操作:

$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import(“mycer.cer”)
$bin = $cer.GetCertHash()
$base64Thumbprint = [System.Convert]::ToBase64String($bin)

我希望这会有所帮助。

关于azure - 使用 KeyVault 和 Azure PowerShell 证书身份验证创建 Azure AD 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com