Было ли New-AzureADApplicationKeyCredential двойное base64 кодировать для CustomKeyIdentifier и Value? - PullRequest
0 голосов
/ 20 марта 2020

Я использую New-AzureADApplicationKeyCredential для создания KeyCredential для приложения. document

Сначала я base64 кодирую отпечаток

$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cer.Import("C:\Users\PFuller\Desktop\abc.cer") 
...
$bin = $cer.GetCertHash()
$base64Thumbprint = [System.Convert]::ToBase64String($bin)
...
New-AzureADApplicationKeyCredential -ObjectId <id> 
                                    -CustomKeyIdentifier $base64Thumbprint  
                                    -Type AsymmetricX509Cert 
                                    -Usage Verify -Value $base64Value

Но результат в манифесте AAD равен двойное закодированное base64 :

"keyCredentials": [
        {
            "customKeyIdentifier": "base64(base64Thumbprint)",
            ...
        }
    ],

Согласно учетные данные сертификата аутентификации приложения платформы идентификации Microsoft

customKeyIdentifier должен только base64 кодироваться один раз и храниться в keyCredentials манифеста.

Я неправильно использовал этот cmd или что-то здесь не так? потому что после того, как я превратил манифест в кодировку base64, все работает нормально.

Спасибо за помощь.

1 Ответ

1 голос
/ 20 марта 2020

На основании моего теста оба значения customKeyIdentifier и value имеют двойное кодирование base64, когда мы создаем KeyCredential для приложения, использующего New-AzureADApplicationKeyCredential.

После этого я использую следующий код для получения доступа токен с этим сертификатом:

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 для в другой раз. Но он также обрабатывает их правильно, когда мы используем сертификат X509 для получения токена доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...