Я настроил WithPrompt(Prompt.NoPrompt), чтобы подавить окно выбора учетной записи и аутентификацию. кажется, преуспевает. Однако после аутентификации браузер отображает сообщение: "Аутентификация завершена. Вы можете вернуться в приложение".
Чтобы предотвратить это, я установил URI перенаправления. на конкретную страницу, содержащую только логику window.close(). Однако в процессе получения токена я сталкиваюсь со следующими исключениями:
Исключение 1:
Код: Выделить всё
MsalClientException: An HttpListenerException occurred while listening on http://localhost:5267/ for the system browser to complete the login. Possible cause and mitigation: the app is unable to listen on the specified URL; run 'netsh http add iplisten 127.0.0.1' from the Admin command prompt.
Код: Выделить всё
HttpListenerException: The process cannot access the file because it is being used by another process.
Вот мой текущий код:
Код: Выделить всё
string[] scopes = new string[] { "user.read" };
var tempUri = "https://login.microsoftonline.com/" + tenantId;
var app = PublicClientApplicationBuilder.Create(appId)
.WithAuthority(new Uri(tempUri))
.WithRedirectUri("http://localhost:5267/ezSearch/Main/Test")
.Build();
AuthenticationResult result;
string token = string.Empty;
try
{
var accounts = app.GetAccountsAsync().Result;
result = app.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
.ExecuteAsync().Result;
}
catch (AggregateException ex)
{
if (ex.InnerException is MsalUiRequiredException)
{
result = app.AcquireTokenInteractive(scopes)
.WithPrompt(Microsoft.Identity.Client.Prompt.NoPrompt)
.ExecuteAsync().Result; // Exceptions occur here
}
else
{
throw;
}
}
token = result.AccessToken;
Как устранить исключение HttpListenerException при использовании AcquireTokenInteractive?
Я попробовал «netsh» http добавьте iplisten 127.0.0.1" и добавьте URL-адрес перенаправления на страницу аутентификации приложения Azure
Будем очень признательны за любые идеи и предложения. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... sal-and-sa