1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xingfly-Spring-CloudJiYuZuulDeTongYiShouQuanRenZheng

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Spring Cloud: единая авторизация и аутентификация на основе шлюза

Данный проект основан на записи в блоге Spring Cloud OAuth2 Zuul и GitHub-репозитории. Из-за проблем с развёртыванием, автору пришлось внести некоторые изменения, но в целом проект остался похожим, только стал более простым в запуске и избавился от необходимости импортировать базу данных и других сложных операций.

Для тех, кто интересуется разработкой Spring Boot, можно ознакомиться с книгой «JavaEE разработчик: Spring Boot в действии», автором которой также является Ван Юньфэй.

Использование OAuth2 позволяет реализовать единую авторизацию и аутентификацию для нескольких микросервисов. Через отправку определённого типа grant type в службу OAUTH происходит централизованная аутентификация и авторизация, в результате чего получается access token, которому доверяют другие микросервисы. В дальнейшем доступ к сервисам осуществляется через этот access token.

  • account — пользовательский микросервис;
  • xfauth — центр авторизации и аутентификации OAuth2;
  • gateway — пограничный шлюз;
  • eureka — сервис регистрации и обнаружения.

Базовая среда

  1. Запустите MySQL и измените конфигурацию datasource в файле bootstrap.yml службы xfauth. Укажите имя пользователя, пароль и имя базы данных.
  2. Запустите Redis и измените конфигурацию redis в файле bootstrap.yml службы xfauth, если по умолчанию порт 6379 и хост localhost, то не нужно ничего менять.
  3. Проект использует Lombok. Если ваша IDE — Eclipse, необходимо установить соответствующий плагин. Если это IDEA версии 2017 или выше, поддержка уже встроена.

Запуск

  1. Запустить Eureka на порту 8888.

  2. Запустить Gateway на порту 8088.

  3. Запустить Xfauth (так как используется JPA, данные таблицы будут созданы автоматически, без необходимости импорта базы данных, просто запустите MySQL). На этом этапе необходимо создать двух пользователей:

    • пользователь 1: username: fpf, password: fpf;
    • пользователь 2: username: wl, password: wl. Эти настройки можно найти в классе Init проекта xfauth.
  4. Запустить Account на порту 8083.

Тестирование

  1. Пройдите через шлюз Zuul и получите access token на порту 8088 (порт шлюза).

  1. Используйте access token для доступа к API /user в службе xfauth и получите информацию о пользователе.

Либо добавьте Authorization в заголовок запроса:

3. Используйте тот же access token для доступа к API /current в службе account и получите информацию о текущем пользователе.

Можно увидеть, что информация о пользователе одинакова.

  1. Используйте access token для доступа к защищённому API /query в службе account.

5. Получите новый access token с использованием учётной записи wl и снова обратитесь к защищённому API /query.

  1. Выйдите из системы.

20171014150795051578998.png

Послесловие

Если вы хотите лучше понять OAuth2, можете обратиться к статье Понимание OAuth 2.0 от Руань Ифэна.

Если вам было полезно, поставьте звёздочку. Автор блога: www.xingfly.com.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Использовались Spring Cloud OAuth2, Spring Cloud Security, Eureka, Zuul. Реализовано единое удостоверение подлинности. Использовано JPA для автоматического создания таблиц данных, что избавляет от проблем с импортом. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xingfly-Spring-CloudJiYuZuulDeTongYiShouQuanRenZheng.git
git@api.gitlife.ru:oschina-mirror/xingfly-Spring-CloudJiYuZuulDeTongYiShouQuanRenZheng.git
oschina-mirror
xingfly-Spring-CloudJiYuZuulDeTongYiShouQuanRenZheng
xingfly-Spring-CloudJiYuZuulDeTongYiShouQuanRenZheng
master