Сбой AcquireTokenSilent()

#.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.