У меня есть консольное приложение С #, которое ссылается на библиотеку ADAL.net (Microsoft.IdentityModel.Clients.ActiveDirectory версии 2.19.208020213)
Цель консольного приложения - использовать конечную точку HTTP, защищенную с помощью ADFS.
Реализация аутентификации ADFS выглядит следующим образом ....
var uc = new UserCredential("user", "password");
var ctx = new AuthenticationContext("https://sts.example.com/adfs", false);
var token = ctx.AcquireToken(ClientResourceUri, ClientId, uc);
Вызов AcquireToken вызывает исключение ...
Эта перегрузка метода не поддерживается https://sts.example.com/adfs/.
Вызов AcquireToken без объекта UserCredential и вместо этого предоставление redirectUri работает, но вызывает диалоговое окно с запросом имени пользователя и пароля, что неприемлемо, поскольку консольное приложение будет выполняться в непользовательской среде ...
var redirect = new Uri("https://example.com/arbitaryRedirect");
var token = ctx.AcquireToken(ClientResourceUri, ClientId, redirect);
//dialog is shown
Если я перейду на последнюю альфа-версию библиотеки adal.net (3.6.212041202-alpha), ошибка станет более показательной ...
MSIS9611: сервер авторизации не поддерживает запрошенный «grant_type». Сервер авторизации поддерживает только «authorization_code» или «refresh_token» в качестве типа предоставления.
Однако добыча в Google дает очень мало.
Действительно ли возможна автоматическая аутентификация в ADFS?
Правильно ли я предположил (на основе ответов в других сообщениях), что правильный подход - использовать вместо этого WsTrustChannelFactory?
Если нет, то какой подход лучше?