MSAL 3.x GetAuthorizationRequestUrlParameterBuilder возвращает неправильный тип данных - PullRequest
0 голосов
/ 30 мая 2019

Согласно ссылке для ConfidentialClientApplication.GetAuthorizationRequestUrl , метод

Вычисляет URL-адрес запроса на авторизацию, позволяя пользователю войти в систему и дать согласие на доступ приложения к определенным областям.в имени пользователя.URL-адрес предназначен для конечной точки / authorize органа, настроенного в приложении.

Итак, я смогу получить URL запроса авторизации с кодом, подобным следующему:

string[] graphScopes = { "Files.Read.All", "User.Read" };

ConfidentialClientApplicationBuilder clientBuilder = ConfidentialClientApplicationBuilder.Create(Settings.AzureADClientId);
ConfidentialClientApplication clientApp = (ConfidentialClientApplication)clientBuilder.Build();

var urlBuilder = clientApp.GetAuthorizationRequestUrl(graphScopes);
urlBuilder.WithRedirectUri(loginRedirectUri.ToString());
urlBuilder.WithAuthority(Settings.AzureADAuthority);
var authUrl = await urlBuilder.ExecuteAsync();
authUrl. ????

Но метод GetAuthorizationRequestUrlParameterBuilder.ExecuteAsync() возвращает AuthorizationResult, которыйне URL и не имеет свойства с URL в нем.

Может кто-нибудь объяснить, что я делаю неправильно, или объяснить, как на самом деле получить URL запроса авторизации?

Ответы [ 2 ]

2 голосов
/ 03 июня 2019

Хотя @TiagoBrenck верен, это ошибка, и я вошел в систему https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/issues/1193

С точки зрения стиля кодирования, я написал бы код, подобный этому:

  string[] graphScopes = { "Files.Read.All", "User.Read" };

  IConfidentialClientApplication cca = ConfidentialClientApplicationBuilder.Create("<client_id>").Build();

  Uri url = await cca.GetAuthorizationRequestUrl(graphScopes)
                 .WithRedirectUri("some_uri")
                 .WithAuthority(AzureCloudInstance.AzurePublic, AadAuthorityAudience.AzureAdAndPersonalMicrosoftAccount)
                 .ExecuteAsync(CancellationToken.None)
                 .ConfigureAwait(false);

1 голос
/ 31 мая 2019

Очевидно, что метод ExecuteAsync(), который возвращает Uri, не является параметром без параметров:

public Task<Uri> ExecuteAsync(CancellationToken cancellationToken)

Итак, возможно, вы хотите сделать следующее:

var authUrl = await urlBuilder.ExecuteAsync(System.Threading.CancellationToken.None);

Ошибкаисправлено в MSAL v4: https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/msal-net-4

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