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

OSCHINA-MIRROR/shengzhao-spring-oauth-server

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

Spring с OAuth2/OIDC: полный пример интеграции

Пример полной интеграции Spring с OIDC 1.0 и OAuth2.1, управляемый Maven.

Используемые основные технологии и версии:

  • JDK (openjdk 17);
  • Spring Boot (3.1.5);
  • Spring Core (6.0.11);
  • spring-security-oauth2-authorization-server (1.1.1);
  • thymeleaf (3.1.1.RELEASE).

Лицензионное соглашение: GPL-2.0

Технические видео:

  1. spring-oauth-server: история открытого проекта. 2018-09-16;
  2. Как запустить spring-oauth-server локально (традиционная версия). 2018-09-17;
  3. Как запустить spring-oauth-сервер локально (версия config). 2018-10-08;
  4. Использование онлайн-тестовой среды. 2018-10-14;
  5. Краткое описание обновления spring-oauth-server v2.0.1. 2019-08-05.

Примечание: эти видео в основном подходят для версии v2.x.

http://list.youku.com/albumlist/show/id_51900110.html (постоянно обновляется...)

1000 star Gitee Award Cup: sos-1000-stars.jpg [2019].

Описание ветвей: — MySQL: посетите Branch master; — MongoDB: посетите Branch mongodb; — Redis: посетите Branch config-redis.

Связанные проекты:

  1. OAuth2 клиентский проект: spring-oauth-client;
  2. Онлайн-тест: https://andaily.com/spring-oauth-server;
  3. Shiro с OLTU: OAuth2 проект: https://gitee.com/mkk/oauth2-shiro.

Как использовать?

  1. Проект управляется Maven, требуется локальная установка Maven (версия разработки — 3.6.0) и MySql (версия разработки — 5.7.22).
  2. Скачайте или клонируйте исходный код проекта на локальный компьютер.
  3. Создайте базу данных MySQL (по умолчанию — oauth2_boot), запустите соответствующий SQL-скрипт (файл находится в каталоге others/database). Порядок запуска скриптов: initial_db.ddl -> oauth.ddl -> initial_data.ddl.
  4. Измените информацию о подключении к базе данных в файле application.properties (находится в каталоге src/main/resources).
  5. Импортируйте локальный проект в IDE (например, Intellij IDEA), чтобы напрямую запустить SpringOauthServerApplication.java для доступа. Или настройте Tomcat (или аналогичный сервер сервлетов) и запустите его. Также можно скомпилировать проект в jar-файл с помощью команды maven package (spring-oauth-server.jar), а затем запустить его с помощью команды java -jar. Если вы используете команду java -jar spring-oauth-server.jar, рекомендуется указать файл конфигурации с помощью параметра spring.config.location, например: java -jar spring-oauth-server.jar --spring.config.location=xxx.properties.
  6. Обратитесь к файлу oauth2.1-flow.md (в каталоге others) для тестирования (также можно получить доступ через браузер, например, http://localhost:8080/).

Параметры конфигурации В таблице ниже приведены основные переменные в файле конфигурации application.properties.

Параметр Обязательный Значение по умолчанию Описание
spring.datasource.* Да - Конфигурация подключения к базе данных
spring.thymeleaf.* Да - Конфигурация Spring MVC thymeleaf
server.port Да 8080 Номер порта службы
spring.security.oauth2.authorizationserver.issuer Да - Issuer OAuth2, полная внешняя адресная строка для производственной среды
spring.application.name Да - Имя компонента приложения

Типы грантов (grant_type) Описание поддерживаемых типов грантов (grant type) OAuth2.1 и их функций. Авторизационные режимы (или схемы)

  1. Авторизационный код (authorization code): сначала авторизация через логин, затем получение токена.
  2. Авторизация с кодом PKCE (PKCE — Proof Key for Code Exchange): авторизация с использованием кода и параметров code_challenge и code_challenge_method. Затем получение токена с параметром code_verifier.
  3. Пароль (password): передача логина и пароля напрямую для получения токена. OAuth 2.1 не рекомендует использовать этот режим.
  4. Обновление access token (refresh token): обновление токена доступа.
  5. Код устройства (device code): используется для аутентификации и авторизации устройств интернета вещей без клавиатуры. Новый в OAuth 2.1.
  6. Клиентский режим (client credentials): клиент регистрируется у сервера, а затем получает ресурсы от сервера.
  7. JWT-носитель (jwt-bearer): утверждение (assertion) для повышения безопасности клиентских запросов. Реализуется двусторонний SSL для проверки подписи клиента сервером.

Внимание: по сравнению с OAuth 2.0, исключён неявный режим (implicit).


Помощь и улучшения

Блог проекта: https://blog.csdn.net/monkeyking1987/article/details/16828059.

Если у вас есть вопросы или проблемы при использовании проекта, вы можете обратиться к Wiki проекта и его файлам на Gitee. Автор будет добавлять решения проблем, о которых сообщают пользователи. Если вы не нашли решение в этих источниках, вы также можете отправить письмо на адрес sz@monkeyk.com.

Для сообщений об ошибках и предложений по улучшению проекта вы можете использовать систему отслеживания ошибок проекта. Автор будет следить за проектом и вносить улучшения.


Расширение функций

  • Сохранение кода авторизации в базе данных: загрузите файл конфигурации на сайте.
  • Изменение времени истечения срока действия токена: загрузите соответствующий файл конфигурации.
  • Настройка собственного grant type: измените значение поля authorized_grant_types в таблице oauth_client_details.
  • Как обновить access token: после успешной авторизации клиент получает данные, включая access token, refresh token и другие параметры. Чтобы обновить токен, отправьте запрос на сервер с параметрами client_id, client_secret, grant_type и refresh_token. Обратите внимание, что refresh_token должен совпадать с полученным ранее, и grant_type должен быть установлен как refresh_token.

План разработки

С версии 0.3 проект публикует планы развития, чтобы пользователи могли следить за прогрессом. Для управления разработкой используется открытый проект andaily-developer.

Версия 3.0.1 (в планах): добавить поддержку WebAuthn для беспарольной авторизации.

Версия 3.0.0 (завершена): проект завершён 31 октября 2023 года. Обновление базовой системы безопасности:

  • обновление JDK до версии 17;
  • переход на Spring 6.x и Spring Boot 3.x;
  • замена Thymeleaf на сервлеты/JSP.

Полное обновление поддержки протоколов:

  • поддержка OAuth2.1 и OIDC1.0.

Изменения в сборке пакета:

  • пакет war заменён на jar;
  • соответствующие изменения в SQL.

Обновление spring-security-oauth2:

  • использование spring-security-oauth2-authorization-server вместо spring-security-oauth2 (подробное объяснение доступно по ссылке).

Улучшение интерфейса:

  • дружественный дизайн с использованием OAuth2.1;
  • обновление всех подсказок.

Добавление поддержки spring-restdocs:

  • автоматическое создание документации по API.

Version: 2.1.1 [отменено] Date: 2022-05-05 / ---

Попытка обновить spring-security-oauth2, подробное объяснение доступно по ссылке.


Version: 2.1.0 [завершено] Date: 2020-06-05 / 2022-05-01

  • Обновлены access_token и refresh_token до JWT (Json Web Token):
    • повышение производительности.
  • Добавлен гибкий параметр конфигурации sos.reuse.refresh-token:
    • позволяет в реальном времени продлевать срок действия токена (аналогично сеансу).
  • Обновлено spring-security oauth2 до версии 2.3.8.RELEASE:
    • добавлено spring-security-jwt версии 1.1.1.RELEASE.

Version: 2.0.2 [завершено] Date: 2019-08-05 / 2020-06-04

  • Исправлена уязвимость CVE-2019-3778:
    • используется spring-security-oauth 2.3.5.RELEASE.
  • Решена проблема с несколькими access_token в базе данных:
    • добавлены уникальные ограничения.
  • Обновлено Spring-Boot до версии 2.1.4.RELEASE.

Version: 2.0.1 [завершено] Date: 2018-05-01 / 2019-08-04

  • Добавлена функция генерации AccessToken с помощью кода.
  • Добавлено сохранение AccessToken в Redis.
  • Обновлён Spring Security OAuth до версии 2.3.4.RELEASE.
  • Изменена конфигурация ошибки для ROLE.
  • Используется Spring-boot 2.0.2.RELEASE.
  • Исправлено #IJO9R:
    • клиентское поле client_secret не проверяется в интерфейсе /oauth/rest_token.
  • Проект представлен в виде видео:
    • более наглядное представление.

Version: 2.0.0 [завершено] Date: 2018-04-09 / 2018-04-21

  • Обновлённый интерфейс:
    • улучшенное понимание и удобство использования, сценарный подход.
  • Переработан с использованием Spring-boot.

Version: 1.1 [отклонено] Date: 2018-10-14 / ---

Нет информации о изменениях.


Version: 1.0 [завершено] Date: 2017-03-30 / 2018-04-04

  • В тестах implicit клиентский секрет удалён.
  • Улучшенный интерфейс:
    • лучшее понимание и удобство использования, сценарный подход.
  • Добавлен API для удаления access_token.
  • Добавлен API для удаления refresh_token.
  • Проверен access_token с помощью API /oauth/check_token.
  • Устранена проблема #IGNQ9:
    • CustomJdbcTokenStore CacheEvict работает корректно. Версия: 0.6 [готово]

Дата: 2016-07-07 / 2016-10-13

  • (150) — изменить OAUTH, чтобы при ошибке возвращался JSON;
  • (151) — добавить поддержку Ehcache для данных;
  • (158) — добавить комментарии в необходимые места кода и конфигурации для удобства понимания;
  • добавить документацию по протоколу OIDC.

Версия: 0.5 [готово]

Дата: 2016-02-19 / 2016-05-24

  • поддержка java-config (нулевая конфигурация), а также использование новых аннотаций, ветка config;
  • OAUTH «token» Restful API;
  • User Overview/ user add/archive;
  • добавление документа API проекта;
  • добавлена ветка MongoDB.

Версия: 0.4 [готово]

Дата: 2015-11-09 / 2015-11-30

  • исправление проблемы с пользовательскими access_token_validity и refresh_token_validity (#5);
  • обновление spring-security-oauth2 до версии 2.0.6 и выше, текущая версия 1.0.5;
  • обновить spring и spring security до версий > 4.0;
  • проект добавлен на онлайн-тестовый сервер;
  • синхронизировать обновления spring-oauth-client с spring-oauth-server;
  • удалить зависимость mybatis;
  • обновить JAVA до 1.8; Servlet 3.0;
  • в таблице Oauth добавлен индекс.

Версия: 0.3 [готово]

Дата: 2015-05-14 / 2015-06-07

  • #73 — обновить версию spring-security-oauth2 до «2.0.6.RELEASE» (текущая: 1.0.5.RELEASE) [ОТМЕНЕНО];
  • #74 — в DDL MySQL oauth добавить create_time, значение по умолчанию — now();
  • #75 — добавить API информации о пользователе для использования проектом spring-oauth-client;
  • #77 — добавить привилегии домена пользователю. Добавить двух начальных пользователей: unityuser (ROLE_UNITY), mobileuser («ROLE_MOBILE). Если пользователь по умолчанию, то вернуть все привилегии, иначе вернуть указанные привилегии;
  • #78 — начальный проект sprint-oauth-client (maven), добавить подмодули;
  • #91 — заменить зависимость log4j на logback;
  • #92 — добавить описание столбцов таблицы базы данных;
  • #93 — сохранить default oauth_code в базе данных (в настоящее время хранится в памяти);
  • spring-oauth-сервер, добавить Bootstrap CSS;
  • #95 — добавить управление client-details; создать/удалить, показать тестовые ссылки. Проектный журнал
  1. 2013-11-19 Начальный проект, старт пуш кода

  2. 2013-11-20 Релиз 0.1 версии

  3. 2015-05-06 Релиз 0.2 версии

  4. 2015-05-27 Создание проекта блога, доступ по адресу http://andaily.com/blog/?cat=19

  5. 2015-06-07 Релиз 0.3 версии

  6. 2015-06-16 Добавление доступа к github: https://github.com/monkeyk/spring-oauth-server, последующие обновления будут синхронизироваться между github и gitosc.

  7. 2015-11-09 Начало разработки 0.4-beta версии

  8. 2015-11-18 Релиз 0.4-бета версии

  9. 2016-01-02 Релиз 0.4 версии

  10. 2016-02-19 Добавление планирования разработки версии 0.5

  11. 2016-04-03 Добавление ветки config

  12. 2016-04-14 Добавление ветки mongodb

  13. 2018-04-21 Использование spring-boot для рефакторинга, добавление реализации 2.0.0 2.0.0

  14. 2018-05-01 Начало разработки ветки 2.0.1

  15. 2019-07-04 Добавление Redis в ветку config

  16. 2019-08-04 Релиз версии 2.0.1

  17. 2020-06-04 Релиз версии 2.0.2

  18. 2022-05-01 Релиз версии 2.1.0

  19. 2023-10-10 Начало новой крупной версии 3.0.0 разработки

  20. 2023-10-31 Релиз новой версии 3.0.0

Дополнительные ресурсы

Ниже приведены дополнительные ресурсы о OAuth2, которые были собраны в процессе обучения и могут быть полезны для более глубокого понимания и использования OAuth2.

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

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

Введение

OAuth2.1, OIDC1.0 и Spring Security. Развернуть Свернуть
HTML и 2 других языков
GPL-2.0
Отмена

Обновления

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

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/shengzhao-spring-oauth-server.git
git@api.gitlife.ru:oschina-mirror/shengzhao-spring-oauth-server.git
oschina-mirror
shengzhao-spring-oauth-server
shengzhao-spring-oauth-server
config