Мы создаем настольное приложение с использованием WPF. NET Core 3.1.
Я пытаюсь подключиться к веб-API с помощью Azure AD Authenticaton, следуя, например, этому руководству . Тем не менее, пример проекта (который работает нормально) написан на WPF. NET Framework.
Есть клиентская часть и серверная (web api) -часть. Поскольку клиент является настольным приложением, вы должны зарегистрировать api-часть в (Azure -> AD -> регистрации приложений ...) с URL-адресом ответа "https://login.microsoftonline.com/common/oauth2/nativeclient"
Я инициализирую свой PublicClientApplicationBuilder с
var app = PublicClientApplicationBuilder
.Create(ClientIdPorterApplication)
.WithAuthority(authority)
.WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
.Build();
и при запуске app.AcquireTokenInteractive (...) получаю сообщение об ошибке:
Поддерживается только URI перенаправления петли, но https://login.microsoftonline.com/common/oauth2/nativeclient был найден. Настройте http://localhost или http://localhost: порт как при регистрации приложения, так и при создании объекта PublicClientApplication. Подробнее см. https://aka.ms/msal-net-os-browser
(этот адрес хорошо подходит для использования в примере, но, опять же, он написан на. NET FW)
поэтому просто ради интереса я изменил replyUrl (как при инициализации выше, так и при регистрации Azure Portal App) на "http://localhost: 1234 ". Пользователь получает в веб-браузере диалог выбора учетной записи, и после выбора учетной записи myname@mycompany.com отображается следующее сообщение:
Проверка подлинности завершена. Вы можете вернуться в приложение. Не стесняйтесь закрывать эту вкладку браузера.
Да !, верно? ... не совсем. В коде я все еще получаю исключение с сообщением об ошибке:
{"Проблема конфигурации препятствует аутентификации - проверьте сообщение об ошибке на сервере для деталей. Вы можете изменить конфигурацию в регистрации приложения портал. Подробнее см. https://aka.ms/msal-net-invalid-client Исходное исключение: AADSTS7000218: Тело запроса должно содержать следующий параметр: 'client_assertion' или 'client_secret'. \ r \ nTrace ID: 7b0f6384-64eb-422 c -a996-cadaa52f1f00 \ r \ nКорреляционный идентификатор: 0c579b5b-e706-4625-96da-fbf03e5a21f9 \ r \ nTimestamp: 2020-04-23 12: 14: 59Z "}
Есть какие-нибудь подсказки? Я где-то в безумии гуглял, что это невозможно на WPF в. net core-сценарии. Я уверен, что должно быть решение
РЕДАКТИРОВАТЬ: В моем моем последнем окне браузера (с сообщением "Аутентификация завершена ...", URL-адрес в окне URL имеет параметр qstring код =