Аутентификация с использованием Google / MS Azure / LinkedIn / Box - PullRequest
0 голосов
/ 20 января 2019

Я новичок в Ваадине (но пока люблю его).Я использую Vaadin 12, но меня смущает «лучший способ» реализовать стандартный экран входа в систему с помощью «большой основной» внешней системы входа, а именно:

  1. вход в систему с помощью Google
  2. войти с помощью MS Azure
  3. войти с помощью LinkedIn
  4. войти с помощью Box

(Я НЕ намерен поддерживать пользовательскую страницу регистрации / входа, чтобы спрашивать пользователей ихимена, электронная почта и т. д. - это пустая трата времени, поскольку пользователи могут выбирать по крайней мере из 4 выше поддерживаемых систем, и таким образом я делегирую всю систему управления именами и паролями гораздо более крупной системе и т. д.)

Однако что-то столь же простое, как стабильная / протестированная система входа в систему, использующая «больших» внешних провайдеров (например, один из приведенного выше списка), похоже, не было встроено в Vaadin 12. (Также не былоЕсть ли примеры, которые я мог бы подражать).Лучшее, что я нашел, было https://vaadin.com/directory/component/oauth2-popup-add-on/overview,, но, похоже, это работает только для Vaadin 7 (и, возможно, 8).И из прошлых вопросов я понимаю, что компоненты Vaadin 8 несовместимы с Vaadin 10/12/14 и т. Д. Итак, как можно безопасно (и легко) внедрить безопасную, простую систему входа в систему с внешними функциями (например, MS Azure), используяVaadin 12?

(Примечание: я нашел https://vaadin.com/directory/component/google-sign-in-component/overview, который, похоже, предназначен для Vaadin 10+, но кажется, что он работает только для Google; означает ли это, что нам нужно создавать подобные компоненты на заказдля MS Azure / LinkedIn и т. д., выяснив, создал ли кто-то полимерный веб-компонент для этих систем, а затем интегрировав его в Vaadin? Даже если ответ «да», кажется, что пример из https://vaadin.com/directory/component/google-sign-in-component/overview «опасен»«(и, между прочим, мои знания в области веб-технологий и безопасности близки к нулю), поскольку, похоже, подразумевается, что можно просто использовать класс« event »для получения имени пользователя / адреса электронной почты и т. д., но технически это не должно делать НЕ происходит от внешнего интерфейса (поскольку любой приличный хакер может затем напрямую вызвать внутренний сервлет Vaadin и просто "предоставить" пользователяимя / адрес электронной почты и т. д.), но вместо этого ТОЛЬКО токен доступа (или, может быть, он называется что-то другое - я сейчас не совсем согласен с терминами), а затем код сервера (и только бэк-эндкод конца) будет повторно вызывать внешнего провайдера (например, Google), используя этот токен доступа, чтобы затем (и только тогда) окончательно определить имя пользователя / адрес электронной почты и т. д. (И, поскольку серверная часть является java, я думаю, что «лучшим»)такой библиотекой для использования является scribe: https://github.com/scribejava/scribejava/) (и, по-видимому, после окончательного определения имени пользователя / электронной почты ее можно как-то сохранить как переменную сеанса в Vaadin, чтобы последующие вызовы имели необходимую информацию?) (ПримечаниеВ качестве дополнительного ограничения я стараюсь избегать Spring - я использовал его в прошлом, и это усложняет мой код в десять раз и делает отладку и интеграцию с не-Spring примером кода легким кошмаром ....Однако я открыт для использования Java EE (то есть библиотек javax), если я должен / если это настоятельно рекомендуется сделать ....)

...