2016-02-05 2 views
4

У меня есть приложение для настольных компьютеров Java. Я нашел много онлайн-ресурсов, которые говорят об аутентификации SSO для веб-приложений. Мне нужно то же самое для приложения старой школы. В принципе, мне нужно приложение, чтобы открыть окно браузера, попросить пользователя пройти аутентификацию против ADFS, а затем вернуть токен.Аутентификация ADFS/SAML для приложения для рабочего стола Java

Как добавить аутентификацию SSO с помощью ADFS/SAML?

ответ

2

Я нашел ответ.

  1. Во-первых, настольному приложению необходимо отобразить окно браузера. Это можно легко реализовать с помощью JavaFX WebView. Я успешно прошел проверку входа в систему Google и ADFS с помощью JavaFX WebView. NB: Если вы используете ADFS, вы должны настроить ADFS для использования auth на основе формы.
  2. Необходимо создать вспомогательный веб-сервис. Webservice предоставит метод, защищенный любым федеративным механизмом аутентификации (SAML2, OAuth и т. Д.). Я не смог сделать это на Java. Есть некоторые решения, такие как JOSSO, но они смехотворно громоздки или сильно отсутствуют. Тем не менее, C# обладает выдающейся поддержкой федеративного auth, что делает его отличным выбором для этой задачи.
  3. Когда пользователь нуждается в аутентификации, настольное приложение отображает окно браузера, которое автоматически вызывает метод выше. После присоединенного подтверждения авторизации браузер сможет получить доступ к этому методу. Этот метод сообщает настольному приложению, разрешен ли доступ к вызывающему пользователю.
  4. Последний шаг - закрыть окно браузера и войти в систему.

NB: Это непростая задача. Это займет около недели работы, чтобы собрать все вместе.

+0

Имейте в виду, что встроенные браузеры НЕ считаются безопасным способом аутентификации SAML2/OpenIDConnect. Родительское приложение обычно может читать содержимое браузера и файлы cookie. Это означает, что родительское приложение может перехватывать учетные данные пользователя, которые он никогда не сможет увидеть. По этой причине iOS и Andriod предоставляют механизм для собственных приложений для запуска автономного браузера, а затем перенаправляют обратно в приложение с помощью системно зарегистрированных uri-схем, которые разработчик приложений зарегистрировал в ОС. Я не верю, что Java имеет возможность зарегистрировать схему uri для себя. – anschoewe

-1

Настольные приложения. не имеют браузеров.

WS-Fed и SAML построены вокруг переадресации браузеров.

Зачем вам SAML? Что относительно OpenID Connect/OAuth?

Если это вариант, посмотрите образцы ADAL Java - Azure Active Directory Authentication Libraries. В ADFS ограниченная поддержка OAuth. V3.0

Другой альтернативный вариант - использовать активный профиль (веб-службы), а не пассивный (браузер).

Но это WS-Trust не SAML.

+0

Ничего не мешает настольным приложениям иметь браузеры. Мне нужен SAML2, потому что это было требованием. Я понял это в конце. –

Смежные вопросы