#.net #winforms #authentication #.net-4.7.2
#.net #winforms #проверка подлинности #.net-4.7.2
Вопрос:
Я пишу клиент WinForms, который подключается к azure WebAPI.
программе не удается выполнить вызов AcquireTokenSilent
с определенной учетной записью. Я всегда получаю это сообщение:
«Вы пытаетесь получить токен без участия пользователя, используя подсказку для входа. В кэше токенов не найдена учетная запись с этой подсказкой для входа «.
Однако вызов AcquireTokenInteractive
с той же учетной записью работает.
Вот подготовка:
IPublicClientApplication pca = PublicClientApplicationBuilder
.Create(ClientID)
.WithAuthority(AzureCloudInstance.AzurePublic, TenantID)
.WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
.Build();
string[] scopes = { "user.read" };
AuthenticationResult resu<
Теперь эта часть завершается с ошибкой:
result = await pca.AcquireTokenSilent(scopes, "office@mydomain.com").ExecuteAsync();
Однако эта часть работает:
В интерактивном диалоговом окне отображается та же учетная запись, что и выше, «office@mydomain.com «.
result = await pca.AcquireTokenInteractive(scopes).ExecuteAsync();
Комментарии:
1. Смогли ли вы решить эту проблему? Я вижу ту же ошибку.
2. @Turbo, к сожалению, нет. Если вы можете решить эту проблему, пожалуйста, дайте мне знать. Мы приостановили проект и попробуем его снова с .net 6.
3. В моем случае я использую MSAL. Модуль PS, который является оболочкой вокруг . MSAL СЕТИ. Я получал ту же ошибку. Но тогда я просто отказался от идеи передачи loginhint . а также отказался от идеи управления тихим и интерактивным входом в систему. Я просто позволяю библиотеке обрабатывать это. Итак, в первый раз он запрашивает меня в интерактивном режиме, а в следующий раз автоматически автоматически извлекает токен. Я использую
Get-MSALToken -ClientId <clientid> -TenantId <tenantid> -Scope <scope>
, я знаю, что это сильно отличается от вашего случая, но я просто хотел упомянуть, потому что я получил точно такую же ошибку при использовании LoginHint.