URI перенаправления с потоком учетных данных клиента - PullRequest
0 голосов
/ 21 февраля 2019

Я изучаю использование учетных данных MSAL и клиента, однако есть одна вещь, которую я не до конца понимаю.

В приведенном Microsoft примере: https://github.com/Azure-Samples/active-directory-dotnetcore-daemon-v2/blob/master/daemon-console/Program.cs

следующий код используется для получения токена доступа:

var clientCredentials = new ClientCredential(_clientSecret);
var app = new ConfidentialClientApplication(_clientId, _authority, "https://daemon", clientCredentials, null, new TokenCache());
string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
AuthenticationResult result = await app.AcquireTokenForClientAsync(scopes);

Что с redirectUri в этом случае?

Я пробовал разные значения как redirectUri, и похоже, что он работает в любом случае ..но если я добавлю относительный путь или ноль, он не сможет получить токен.Какое это значение должно быть?

Для консольного приложения не имеет смысла прослушивать URL-адрес, однако в документации для ConfidentialClientApplication сказано, что это необходимо.

1 Ответ

0 голосов
/ 22 февраля 2019

Чтобы запросить токен доступа с потоком учетных данных клиента, приложение отправит запрос токена HTTP POST на конечную точку токена Azure AD с учетными данными приложения, AAD вернет токен доступа в ответ, URL-адрес перенаправления в этом сценарии не требуется.Согласно исходному коду, URL-адрес перенаправления также не используется:

private async Task<AuthenticationResult> AcquireTokenForClientCommonAsync(IEnumerable<string> scopes, bool forceRefresh, ApiEvent.ApiIds apiId, bool sendCertificate)
{
    Authority authority = Instance.Authority.CreateAuthority(ServiceBundle, Authority, ValidateAuthority);
    AuthenticationRequestParameters parameters = CreateRequestParameters(authority, scopes, null,
        AppTokenCache);
    parameters.IsClientCredentialRequest = true;
    parameters.SendCertificate = sendCertificate;
    var handler = new ClientCredentialRequest(
        ServiceBundle,
        parameters,
        apiId,
        forceRefresh);

    return await handler.RunAsync(CancellationToken.None).ConfigureAwait(false);
}

Но вы должны предоставить действительный URL-адрес при инициализации ConfidentialClientApplication на этом этапе.

...