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

OSCHINA-MIRROR/dromara-sureness

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

sureness

Dromara Sureness | Документация на китайском

Эффективный безопасный фреймворк, сосредоточенный на защите REST API.

Лицензия Maven GitHub pull request check contexts Gitter GitHub Release Date star star

Главная страница: sureness.dromara.org

Хостинг кода

| GitCode | Gitee |GitHub |

ВведениеDromara Sureness — это эффективный открытый-источниковый безопасный фреймворк, сосредоточенный на защите REST API.

  • Предоставляет аутентификацию и авторизацию на основе RBAC.
  • Независим от конкретных фреймворков (поддерживает Javalin, Spring Boot, Quarkus, Ktor, Micronaut и более).
  • Поддерживает динамическое изменение прав доступа.
  • Поддерживает WebSocket и HTTP контейнеры (Servlet и JAX-RS).
  • Поддерживает JWT, Basic Auth, Digest Auth и возможность создания пользовательских методов аутентификации.
  • Высокая производительность благодаря дереву сопоставления словарей.
  • Хороший интерфейс расширяемости, демонстрационные примеры и документация.##### Почему высокая производительность

pathRoleMatcher

Пример поддержки фреймворка
  • Пример интеграции с Spring Boot (схема конфигурационного файла) sample-bootstrap
  • Пример интеграции с Spring Boot (схема базы данных) sample-tom
  • Пример интеграции с Quarkus sample-quarkus
  • Пример интеграции с Javalin sample-javalin
  • Пример интеграции с Ktor sample-ktor
  • Пример интеграции с Spring WebFlux sample-spring-webflux
  • Пример интеграции с Micronaut sample-micronaut
  • Пример интеграции с JFinal sample-jfinal
  • Пример интеграции с Solon sample-solon
  • Пример интеграции с Spring Gateway sample-spring-gateway
  • Пример интеграции с Zuul sample-zuul
  • Пример интеграции с сессиями sureness-session
  • Пример интеграции с кэшем сессий Redis sureness-redis-session
  • Ожидаемых примеров больше

Сравнение безопасности фреймворков

Sureness VS Shiro VS Spring Security| ~ | Уверенность | Shiro | Spring Security |

| --- | --- | --- | --- | | Поддержка нескольких фреймворков | поддерживается | требуется модификация | не поддерживается | | REST API | поддерживается | требуется модификация | поддерживается | | WebSocket | поддерживается | не поддерживается | не поддерживается | | Сопоставление путей | дерево словарной проверки | антипаттерн | антипаттерн | | Поддержка аннотаций | поддерживается | поддерживается | поддерживается | | Servlet | поддерживается | поддерживается | поддерживается | | JAX-RS | поддерживается | не поддерживается | не поддерживается | | Динамическое управление правами доступа | поддерживается | требуется модификация | требуется модификация | | Производительность | высокая | ниже | ниже | | Кривая обучения | простая | простая | сложная |##### Бенчмарк

benchmarkРезультаты бенчмарка показывают, что Sureness уступает в производительности на 0,026 миллисекунды по сравнению с беспостоянной приложением, Shiro — на 0,088 миллисекунды, а Spring Security — на 0,116 миллисекунды.
С другой стороны, Sureness практически не потребляет ресурсы, и потери производительности (убытки TPS) составляют в три раза больше, чем у Shiro, и в четыре раза больше, чем у Spring Security.
Пропасть в производительности будет ещё больше увеличиваться по мере роста цепочки соответствия API. Подробнее см. Бенчмарк тест## Быстрый старт

Некоторые соглашения

  • На основе RBAC (Роль-Основана Авторизация), используется модель "Пользователь-Роль-Ресурс".
  • Мы рассматриваем запросы API как ресурсы, формат ресурса выглядит как requestUri===httpMethod. То есть URI запроса вместе с методом HTTP (post, get, put, delete...) рассматриваются как единый ресурс. Пример: /api/v2/book===get.
  • Пользователь принадлежит определённой роли — роль имеет доступ к определённому ресурсу — пользователь может получить доступ к этому ресурсу.

Сопоставление путей ресурсов см.: URI Match

Добавьте уверенность в ваш проект

Когда используете сборку Maven или Gradle, добавьте координаты

<dependency>
    <groupId>com.usthe.sureness</groupId>
    <artifactId>sureness-core</artifactId>
    <version>1.1.0</version>
</dependency>
compile group: 'com.usthe.sureness', name: 'sureness-core', version: '1.1.0'
```#### Используйте конфигурацию по умолчанию для настройки Sureness

По умолчанию конфигурация `DefaultSurenessConfig` использует источник данных документов `sureness.yml` в качестве источника аутентификации. Поддерживает аутентификацию JWT, Basic auth, Digest authentication.
```java
@Bean
public DefaultSurenessConfig surenessConfig() {
    return new DefaultSurenessConfig();
}

Загрузка источников данных для аутентификации

Для аутентификации Sureness требуется предоставить свои собственные данные учетной записи, данные прав ролей и т.д. Эти данные могут происходить из текстовых файлов, реляционных баз данных, нереляционных баз данных, аннотаций и т.д. Мы предлагаем интерфейсы SurenessAccountProvider, PathTreeProvider для реализации пользователем загрузки данных из источника данных, который они выбирают.

  • SurenessAccountProvider — интерфейс провайдера источника данных учетных записей.
  • PathTreeProvider — интерфейс провайдера источника данных URI ресурсов и ролей.

Значение по умолчанию для источника данных документов — sureness.yml, см.: Источник данных документов по умолчанию. Подробности конфигурации источника данных аннотациями — AnnotationLoader, см.: Источник данных аннотациями.Если конфигурационные данные ресурсов происходят из текстовых файлов, обратитесь к примеру: Integrating Sureness with Spring Boot (configuration file schema) Если конфигурационные данные ресурсов происходят из баз данных, обратитесь к примеру: Integrating Sureness with Spring Boot (database schema)

Добавление прокси-сервера, перехватывающего все запросыСуть механизма sureness заключается в перехвате всех запросов REST для целей аутентификации и авторизации. Прокси-сервер может выступать в роли фильтра или прокси-сервера Spring, перехватывая все входящие запросы для их проверки.

SubjectSum subject = SurenessSecurityManager.getInstance().checkIn(servletRequest);

Реализация процесса обработки исключений аутентификации

Механизм sureness использует процесс обработки исключений:

  • Если аутентификация проходит успешно, метод checkIn возвращает объект SubjectSum, содержащий информацию о пользователе.
  • Если аутентификация завершается неудачей, метод checkIn выбрасывает различные типы исключений аутентификации.

Пользователям следует продолжать дальнейший процесс на основе этих исключений (например, отправлять ответ на запрос):

Здесь требуется настройка исключений, выбрасываемых методом checkIn: передавать их напрямую при успешной аутентификации, ловить исключение при неудачной аутентификации и выполнять необходимые действия:

try {
    SubjectSum subject = SurenessSecurityManager.getInstance().checkIn(servletRequest);
} catch (ProcessorNotFoundException | UnknownAccountException | UnsupportedSubjectException e4) {
    // Создание исключения, связанного с ошибками пользователя
} catch (DisabledAccountException | ExcessiveAttemptsException e2) {
    // Исключение, связанное с отключенным аккаунтом
} catch (IncorrectCredentialsException | ExpiredCredentialsException e3) {
    // Исключение, связанное с неудачей аутентификации
} catch (UnauthorizedException e5) {
    // Исключение, связанное с неудачей авторизации
} catch (SurenessAuthenticationException | SurenessAuthorizationException e) {
    // Другие исключения Sureness
}
```Подробнее см.: [Основные исключения аутентификации Sureness](docs/default-exception.md)

**Удачи**

## Расширенное использование

Sureness поддерживает настраиваемых пользователей, создателей пользователей, обработчиков аутентификации и многое другое.

Перед тем как использовать расширенные возможности, давайте сначала поймём общую процедуру Sureness:

![поток](/docs/_images/flow-en.png)

Как видно из вышеописанного процесса, пользователь создаётся посредством `SubjectCreate` согласно телу запроса, и различные обработчики аутентификации обрабатывают поддерживаемых пользователей.

Sureness предоставляет следующие общие интерфейсы как точки расширения:

- `Subject`: Интерфейс авторизованного пользователя, предоставляющий имя пользователя, пароль, запрос ресурсов, роли и т.д.
- `SubjectCreate`: Интерфейс создания субъекта, предоставляющий метод создания.
- `Processor`: Обрабатывает интерфейс субъекта, где происходит аутентификация и авторизация.
- `PathTreeProvider`: Предоставитель данных ресурсов, который может загружать данные из текстового файла или базы данных и т.д.
- `SurenessAccountProvider`: Предоставитель данных аккаунта, который может загружать данные из текстового файла или базы данных и т.д.

Ссылка на [точку расширения](https://usthe.com/sureness/#/extend-point) для расширенной документации.

1. **Пользовательская тема**`Реализация Subject, добавление пользовательского содержимого темы`  
`Реализация SubjectCreate для создания пользовательской темы`  
`Реализация Processor для поддержки пользовательской темы`

Смотрите [пользовательскую тему](docs/custom-subject.md)

2. **Пользовательский Creator Темы**

`Реализация SubjectCreate для создания вашей пользовательской темы`   

Смотрите [пользовательский Creator Темы](docs/custom-subject-creator.md)

3. **Пользовательский Processor**

`Тема также может поддерживаться различными процессорами, поэтому мы можем создать пользовательский процессор для поддержки пользовательской темы`
`Реализация Processor, установка того, какую тему он поддерживает, и реализация деталей обработки`

Смотрите [пользовательский Processor](docs/custom-processor.md)

4. **Пользовательский DataSource**

`Реализация PathTreeProvider, загрузка в DefaultPathRoleMatcher`   
`Реализация SurenessAccountProvider, загрузка в процессор`  

Смотрите [пользовательский DataSource](docs/custom-datasource.md)

Дополнительные сведения см. в разделе [интеграция Sureness с Spring Boot образец (схема базы данных)](sample-tom)

## Вклад

Очень приветствуем вклад в этот проект, помогайте сделать Sureness лучше.Компоненты репозитория:
- [Ядро Sureness — Sureness-core](core)
- [Образец интеграции Sureness с Spring Boot (схема конфигурационного файла) — sample-bootstrap](sample-bootstrap)
- [Образец интеграции Sureness с Spring Boot (схема базы данных) — sample-tom](sample-tom)
- [Примеры проектов, использующих Sureness в каждом фреймворке (Javalin, Ktor, Quarkus) — samples](samples)Смотрите [вклад](CONTRIBUTING.md)


## Дружественные ссылки

* **```HertzBeat```** Открытая система мониторинга реального времени с возможностью создания пользовательских мониторов и агента без установки: [GitHub](https://github.com/dromara/hertzbeat)
* **```JustAuth```** Библиотека Java для авторизации третьими сторонами: [GitHub](https://github.com/justauth/JustAuth)
* **```MaxKey```** Лидирующий продукт управления доступом открытым исходным кодом для предприятий: [GitHub](https://github.com/dromara/MaxKey)
* **```PhalApi```** PHP API-Framework: [Веб-сайт](https://www.phalapi.net/)


## Присоединиться к обсуждению

Группа QQ: 390083213   
[Обсуждение GitHub](https://github.com/dromara/sureness/discussions)           
[Канал Gitter](https://gitter.im/dromara/sureness)<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat/home/static/img/wechat.png" width="400"/>

<br/>

<img alt="planet" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/planet.jpg" width="400"/>


## Лицензия  
[`Apache License, Version 2.0`](https://www.apache.org/licenses/LICENSE-2.0.html)

## Благодарности  

[![JetBrains](home/static/img/jb_beam.svg)](https://www.jetbrains.com/community/opensource/#support)   

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

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

Введение

Высокопроизводительный фреймворк аутентификации и авторизации, ориентированный на REST API, предназначен для обеспечения безопасности API. Развернуть Свернуть
Apache-2.0
Отмена

Участники

все

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

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