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

OSCHINA-MIRROR/mkk-oauth2-shiro

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

Интеграция Apache Oltu и Shiro.

Предоставление лёгкого в использовании фреймворка для приложений OAuth2.

Реализован с учётом различных сценариев использования (например, веб-приложения, мобильные устройства).

Этот проект аналогичен проекту spring-oauth-server по требованиям и сценариям использования. Разница заключается в используемых технологиях: spring-oauth-server использует Spring Security + spring-security-oauth2, а oauth2-oltu имеет следующие особенности:

  • Более прозрачный: каждый шаг реализации имеет доступный для просмотра и более понятный исходный код.
  • Больше возможностей для настройки и расширения: можно настраивать содержимое или формат сообщений об ошибках, добавлять дополнительную логику обработки запросов и т. д.
  • Лучшая читаемость: благодаря отсутствию Spring Security у Shiro и Oltu, весь код представляет собой обычные контроллеры или Java Beans для бизнес-логики, что делает его более читаемым и понятным.
  • Модульность: благодаря модульной структуре Oltu, authz и resources разделены на отдельные модули, которые можно объединять в одном проекте или разделять на разные модули в зависимости от потребностей.

Рекомендуется: реализация следующего поколения аутентификации и авторизации на основе протокола OIDC: MyOIDC.

Основные технологии и версии

— Spring Boot — 2.4.13; — oltu — 1.0.2; — shiro — 1.11.0; — MySQL — 5.6+.

Среда разработки

JDK — 1.8.0_40; Maven — 3.6.0; MySQL — 5.7.22.

Описание модулей проекта

Проект oauth2-shiro использует модульную разработку для достижения цели высокой связности и низкой связанности, что лучше соответствует потребностям реальных проектов. Он состоит из трёх модулей: authz, core и resources.

  • Модуль authz реализует логику получения токена с использованием различных типов grant_type.
  • Модуль core содержит общие компоненты, такие как определение ClientDetails и AccessToken, и используется другими модулями.
  • Ресурсный модуль resources управляет ресурсами (URI), защищёнными OAuth2, используя access_token.

Онлайн-тестирование

Модуль authz: https://andaily.com/authz/ (v0.2). Ресурсный модуль: https://andaily.com/rs/ (v0.2).

Версия Redis

Существует две версии с использованием Redis:

  1. Redis + MySQL: https://gitee.com/mkk/oauth2-shiro-redis.
  2. Только Redis: https://gitee.com/mkk/oauth2-shiro-redis/tree/redis/.

В версии Redis данные токена хранятся в Redis, и срок действия данных автоматически истекает с помощью функции TTL, обеспечивая более высокую производительность.

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

  1. Проект управляется Maven, поэтому необходимо установить Maven локально (версия для разработки — 3.6.0) и базу данных MySQL (версия для разработки — 5.7.22).
  2. Скачайте или клонируйте проект на локальный компьютер.
  3. Проект состоит из трёх модулей (core, authz, resources), где core — это Java-проект (jar), а authz и resources — проекты SpringBoot (.jar).
  4. Создайте базу данных MySQL с именем oauth2_shiro и запустите соответствующие сценарии SQL (файлы находятся в каталоге others/database). Для запуска тестов также потребуется создать базу данных oauth2_shiro_test и запустить сценарии SQL.
  5. Измените файлы конфигурации application.properties в модулях authz (в src/main/resources) и resources (также в src/main/resources), чтобы настроить подключение к базе данных oauth2_shiro.
  6. Импортируйте проект в IDE (например, Intellij IDEA) и запустите сервис.
  7. Запустите серверы authz (порт по умолчанию — 8080, класс запуска — AuthzApplication.java) и resources (порт по умолчанию — 8083, класс запуска — ResourcesApplication.java). Проверьте журналы консоли или файлы журналов в папке logs/.
  8. Также можно скомпилировать проект с помощью команды maven package, чтобы получить jar-файлы SpringBoot (authz.jar и rs.jar). При компиляции обратите внимание на информацию о подключении к базе данных в файлах pom.xml каждого модуля. Можно добавить -Dmaven.test.skip=true в команду Maven, чтобы пропустить тесты. Затем запустите jar-файлы с помощью java -jar.
  9. Посетите адрес authz в браузере: http://localhost:8080 для онлайн-тестирования или используйте postman для тестирования, следуя содержимому файла oauth_test.txt в каталоге others.

Поддерживаемые grant_types

OAuth2 grant_types, поддерживаемые проектом oauth2-shiro, и их функции:

  • authorization_code — режим кода авторизации (сначала логин для получения code, затем получение token).

  • password — режим пароля (передаются имя пользователя и пароль для прямого получения token). Не рекомендуется

  • refresh_token — обновляет access_token.

  • implicit (token) — упрощённый режим (токен передаётся в Hash redirect_uri; Auth-клиент работает в браузере, например, JS, Flash). Не рекомендуется.

  • client_credentials — клиентский режим (без пользователя, пользователь регистрируется на клиенте, затем клиент получает ресурсы от имени «сервера» от сервера).

В OAuth 2.1 повышена безопасность использования grant_type (например, не рекомендуется использовать password). Подробнее об изменениях можно узнать в статье «OAuth 2.1: состояние и основные характеристики».

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

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

План внедрения Spring-Boot:

  1. Версия: 2.0.1 [план]. Дата: --- / ---.

  2. Версия: 2.0.0 [завершено]. Дата: 2020-07-05 / 2023-09-28.

    • Обновлена структура проекта с использованием Spring Boot, thymeleaf вместо servlet/jsp, jar вместо war.
    • Обновлено использование JDK 1.8, logback вместо log4j (для решения проблемы безопасности log4j).
    • Поддержка JWT для токена с возможностью контроля совместимости с предыдущими версиями через параметр authz.token.generator.type.
    • Обновление shiro до версии v1.11.0.
    • Улучшение безопасности хранения паролей с использованием SHA-256 и поддержки соли (через параметр authz.store.credentials.alg).
    • Использование более безопасного пароля для начального аккаунта, включая прописные и строчные буквы, цифры и специальные символы, длину не менее 10 символов.
  3. Версия: 0.3 [завершено]. Дата: 2016-07-16 / 2018-10-17.

    • Обновление oltu до версии 1.0.2 и завершение тестирования (152).
    • Попытка добавления и реализации OIDC в oauth2-shiro (отменена) (153).
    • Добавление необходимых комментариев кода и комментариев конфигурации для улучшения понимания (161).
    • В режиме implicit не требуется client_secret.
  4. Версия: 0.2 [завершено]. Дата: 2016-05-26 / 2016-07-03.

    • Обновлён интерфейс главной страницы, следуя spring-oauth-server (66).
    • Обзор сведений о клиенте (67).
    • Тестирование сведений о клиенте (68).
    • Просмотр и редактирование пользователей (69).
    • Добавлены API-инструкции с примерами различных сценариев (70).
    • Публикация на тестовом сервере (71).
    • Обновлены инструкции по интерфейсу модуля ресурсов (72).

Проектные новости

  • 2015-05-17 — начало проекта, начало отправки кода (частное).
  • 2015-07-16 — статья о состоянии разработки проекта oauth2-shiro за июль.
  • 2015-09-06 — статья о состоянии разработки проекта oauth2-shiro за август.
  • 2015-09-06 — проект стал открытым, началась разработка модуля ресурсов.
  • 2015-09-26 — завершена версия 0.1, выпущена бета-версия 0.1-beta.
  • 2015-10-07 — перестройка структуры проекта, выпуск версии 0.1-rc.
  • 2016-05-26 — начало разработки версии 0.2.
  • 2016-07-02 — добавление онлайн-тестовой среды.
  • 2016-08-17 — выпуск версии 0.2.
  • 2017-01-21 — добавлен в GitHub, адрес Git@OSC: http://git.oschina.net/mkk/oauth2-shiro.

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

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

Введение

Интеграция OAuth2 (oltu) и Shiro. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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