Я пытаюсь написать WPF-клиент, который использует ADAL для аутентификации против ADFS на Windows Server 2012 R2. Я успешно реализовал это с помощью «Аутентификации форм», где пользователю предлагается ввести имя пользователя и пароль. Тем не менее, я хочу использовать SSO и использовать зарегистрированного пользователя домена для аутентификации против ADFS.SSO от ADAL в WPF-клиенте в ADFS 3.0 на Windows Server 2012 R2
К сожалению, я только получаю сообщение об ошибке, говорящее:
Эта перегрузка метод не поддерживается «< ADFS имясервера>»
Я сделал много поиска, но найти часть информации противоречива:
Это ТАК размещать о Windows Store App (любые различия в WPF?), где Vittorio Bertocci ссылки на блог о том, как достичь этого: ADAL for Windows Store SSO
Этот SO пост, где Витторио Bertocci утверждает, что молчание аутентификации возможно только с Windows Server 2016: Authenticate with ADFS inside Console App silently
ли это тот факт, что Windows Server 2016 требуется для выполнения единого входа в сочетании с ADAL? Есть ли другой способ сделать это?
EDIT:
После обновления до последней альфа Адал (3.9.302111717-альфа) я получаю более подробное сообщение об ошибке
MSIS9611: Сервер авторизации не поддерживает запрошенному «grant_type». Сервер авторизации поддерживает только «authorization_code» или «refresh_token» в качестве типа гранта.
код Я выполнения заключается в следующем:
string authority = "https://myServer.com/adfs";
string resourceURI = "http://myApp/";
string clientId = "XXXX-XXX-XXXX-XXXX-XXXXX";
string clientReturnUri = "http://anarbitraryreturnuri/";
var ac = new AuthenticationContext(authority, false);
var token = await ac.AcquireTokenAsync(resourceURI, clientId,new UserCredential());
я смог реализовать рабочее решение, используя WS-Trust, поэтому я уверен, что машина я бегу от того, имеет частную настройки, чтобы приложение могло найти текущего пользователя.
oauth2 конечная точка выглядит следующим образом:
Кроме того, моя глобальная политика аутентификации устанавливается следующим образом:
Спасибо, @vibronet. Однако у меня все еще есть проблемы. Я обновил свой пост с дополнительной информацией. Можете ли вы увидеть все, что могло бы стать источником моих проблем? –
Теперь я лучше понимаю ваш сценарий, спасибо за дополнительные подробности. В Windows Server 2012 R2 этот метод не будет работать напрямую с ADFS - он работает только в том случае, если ADFS объединяется с Azure AD. Если вы хотите придерживаться 2012 года, вам нужно вызвать AcquireToken так же, как и для проверки подлинности форм, но используйте PromptBehavior.Never. * Из интрасети * этот результат shoudl в SSO, учитывая, что он использует невидимый браузер, который должен аутентифицироваться непосредственно против конечной точки Kerberos. – vibronet
Еще раз спасибо. Переход на использование Promptbehavior.Never дает «Требуемый ресурс требует аутентификации пользователя». Promptbehavior.Auto выводит журнал безопасности Windows, но после входа в Adal не удается выполнить «Запрос не может быть обработан сервером из-за недействительного синтаксиса». Я подозреваю, что моя конфигурация ADFS может быть отключена, это моя первая настройка. –