Официальный сайт Sureness Репозиторий Gitee Репозиторий GitHub
Приветствуем вас в проекте Sureness! Если вам понравился проект, пожалуйста, оставьте звездочку, чтобы поддержать нас!
Также приветствуем всех интересующихся Sureness! Если вы хотите принять участие в развитии, присоединяйтесь к нашему QQ-чату: 390083213
В современной архитектуре с разделением клиентской и серверной части, эффективная и быстрая система аутентификации и авторизации для защиты предоставленных REST API
становится особенно важной. Однако существующие системы, такие как Apache Shiro, который не имеет нативной поддержки RESTful
, или Spring Security, которая глубоко связана с Spring, не всегда отвечают нашим требованиям.
Именно поэтому была создана система Sureness, которая предоставляет решение для этих проблем, предлагая систему аутентификации и авторизации, ориентированную на REST API, без зависимости от конкретных фреймворков, возможность динамического изменения прав доступа, поддержку нескольких стратегий аутентификации, более высокую скорость работы и легкость использования и расширения.## 🎡 Описание
Sureness — это система аутентификации и авторизации, созданная после глубокого использования Apache Shiro, с учётом его преимуществ и новых требований.
Ориентирована на аутентификацию и авторизацию для
REST API
, основана на модели RBAC (пользователи-роли-ресурсы) и сосредоточена на обеспечении безопасностиAPI
.Независима от конкретных web-фреймворков (уже есть примеры интеграции с Spring Boot, Quarkus, Javalin, Ktor, Micronaut, JFinal, Solon и др.)
Поддерживает динамическое изменение конфигураций прав доступа (можно динамически менять права доступа для каждого
API
)Поддерживает различные стратегии аутентификации (
JWT, Basic Auth, Digest Auth
и т.д.), а также возможность расширения и создания собственных методов аутентификацииОбладает высокой производительностью благодаря улучшенной структуре дерева словарей
Предоставляет хорошие возможности для расширения, с примерами и документацией для быстрого понимания и применения
Низкая конфигурация, легкое расширение и отсутствие привязки к другим фреймворкам позволяют Sureness быстро и безопасно защищать различные сценарии использования##### 🔍 Сравнение| ~ | уверенность | shiro | spring security | | --- | --- | --- | --- | | Поддержка нескольких фреймворков | Поддерживается | Нужна доработка для поддержки | Не поддерживается | | Поддержка RESTful API | Поддерживается | Нужна доработка для поддержки | Поддерживается | | WebSocket | Поддерживается | Не поддерживается | Не поддерживается | | Соответствие цепочкам фильтров | Оптимизированное дерево для соответствия | Ант-соответствие | Ант-соответствие | | Поддержка аннотаций | Поддерживается | Поддерживается | Поддерживается | | Servlet | Поддерживается | Поддерживается | Поддерживается | | JAX-RS | Поддерживается | Не поддерживается | Не поддерживается | | Динамическое изменение прав доступа | Поддерживается | Нужна доработка для поддержки | Нужна доработка для поддержки | | Производительность/скорость | Быстро | Медленнее | Медленнее | | Кривая обучения | Простая | Простая | Крутая |##### ✌ Примеры поддержки- [x] Пример интеграции Spring Boot с Sureness (вариант конфигурационного файла) sample-bootstrap
usthe
это frontend системы управления доступом и правами для stateless аутентификации RESTful URL, основанной на angular+typescript+adminlte
, backend bootshiro
В отличие от обычных решений, предоставляет возможность конфигурирования страниц, динамического управления безопасностью RESTful API
Защищает приложение за счет динамической шифровки передачи данных, автоматического обновления JWT
при истечении срока действия, мониторинга действий пользователя и других мер безопасности## Использование и некоторые соглашения
--------- После того как вы создали api
в backend с использованием этого проекта, вам потребуется добавить новый api
в frontend странице в разделе Ресурсная конфигурация -> Управление API с использованием стиля совпадения ant
(необходимо отметить, что незащищённые api
, которые не были настроены, могут быть доступны всем).
Пример: Получение списка связанных пользователей для роли rest-url
равно /role/user/{roleId}/{currentPage}/{pageSize}
, метод доступа - GET
. Вам следует добавить новый api
в форме /role/user/*/*/*
с методом доступа GET
.
Согласно соглашению, цепочка совпадений url
должна иметь вид url="url+==+httpMethod"
.
После добавления нового api
на странице вам потребуется настроить его для авторизации в разделе Ресурсная конфигурация -> Управление ролями, где можно указать роли, которым будет предоставлен доступ к этому api
, меню и связанным пользователям (по соглашению, api
, который был назначен роли auth_anon
, может быть доступен любому пользователю; обратите внимание, что api
, который не был назначен ни одной роли, также может быть доступен любому пользователю).- Авторизованные меню были получены при первом входе в систему и сохранены в sessionStorage
для предотвращения повторной загрузки. Для просмотра эффекта изменения меню после авторизации вам потребуется закрыть текущую страницу и открыть её заново (или очистить sessionStorage
для автоматической загрузки новых данных).- Приятного использования
Общая схема выглядит так:
Основан на angular5 + angular-cli + TypeScript + RxJS + Bootstrap + AdminLTE
, придерживается лучших практик Angular. В процессе использовались node.js и webpack, но я не очень знаком с ними.
Основан на Spring Boot + Apache Shiro + MyBatis
, имеет RESTful стиль API, с пользовательскими кодами состояния, JSON Web Token, пула соединений Druid, генерацию документации Swagger, Redis для хранения refresh token и динамических ключей, Maven, одностороннее шифрование MD5 и двустороннее AES и прочее...
Этот Nginx используется как сервер обратного прокси, что решает проблему cross-origin, а также обеспечивает реальный IP-адрес (в настоящий момент серверная часть поддерживает cross-origin, поэтому Nginx может не понадобиться). Другой Nginx используется в качестве сервера приложений Angular, Tomcat — для bootshiro.
Файл конфигурации Nginx для обратного прокси можно найти здесь: конфиг
Процесс выглядит так:
git clone https://github.com/tomsun28/DockerFile.git
nginx.conf
: IP адреса заднего конца bootshiro
и переднего конца uste
.docker build -t nginx:1.0 .
docker run -d -p 80:80 --name nginx nginx:1.0
git clone https://gitee.com/yourName/usthe.git
npm install -g @angular/cli@latest
npm install
apiBaseUrl
в /src/environments/environments.ts
на адрес API вашего сервераapiBaseUrl
— это адрес nginx, соглашение nginx-url+'/api/'
является корневым url проекта, предоставляющего API; конкретные изменения можно сделать в файле nginx.conf
)ng serve
git clone https://gitee.com/yourName/usthe.git
/src/environments/environments.prod.ts
для указания базового URL API для продакшнаdocker build -t usthe:1.0 .
docker images
, чтобы проверить успешность создания образаdocker run -d -p gstl:4200 --name haiLady usthe:1.0
docker ps
, чтобы проверить запущенный контейнерhttp://localhost:4300
git clone https://gitee.com/yourName/usthe.git
/src/environments/environments
для указания базовых URL API для продакшна и разработки#!/bin/bash
# сборка в Jenkins shell
# URL для регистрации в Docker Hub, после чего созданный образ будет загружен в registry или Docker Hub
REGISTRY_URL=127.0.0.1:5000
# docker login --username tomsun28 --password xxxx
# генерация версии на основе текущего времени
TAG=$REGISTRY_URL/$JOB_NAME:`date +%y%m%d-%H%M`# Использование Dockerfile для создания образа
docker build -t $TAG $WORKSPACE/.
docker push $TAG
docker rmi $TAG
# Удаление ранее запущенного контейнера, если он существует
if docker ps -a | grep -i $JOB_NAME; then
docker rm -f $JOB_NAME
fi
# Запуск нового контейнера с использованием последнего созданного образа
docker run -d -p 4200:80 --name $JOB_NAME $TAG
gitee:
github:
Продолжаем обновление...
======================================
Пожалуйста, помогите улучшить этот проект^^
Howieair за иконку свиньи
zhangkaitao за учебник "Следуй за мной Shiro"
Статьи и открытые проекты от наших коллег
Спасибо за поддержку открытых проектов!
Спасибо JetBrains за поддержку открытого лицензионного программного обеспечения!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )