Эффективный безопасный фреймворк, сосредоточенный на защите REST API.
Главная страница: sureness.dromara.org
Хостинг кода
| --- | --- | --- | --- | | Поддержка нескольких фреймворков | поддерживается | требуется модификация | не поддерживается | | REST API | поддерживается | требуется модификация | поддерживается | | WebSocket | поддерживается | не поддерживается | не поддерживается | | Сопоставление путей | дерево словарной проверки | антипаттерн | антипаттерн | | Поддержка аннотаций | поддерживается | поддерживается | поддерживается | | Servlet | поддерживается | поддерживается | поддерживается | | JAX-RS | поддерживается | не поддерживается | не поддерживается | | Динамическое управление правами доступа | поддерживается | требуется модификация | требуется модификация | | Производительность | высокая | ниже | ниже | | Кривая обучения | простая | простая | сложная |##### Бенчмарк
Результаты бенчмарка показывают, что Sureness уступает в производительности на 0,026 миллисекунды по сравнению с беспостоянной приложением, Shiro — на 0,088 миллисекунды, а Spring Security — на 0,116 миллисекунды.
С другой стороны, Sureness практически не потребляет ресурсы, и потери производительности (убытки TPS) составляют в три раза больше, чем у Shiro, и в четыре раза больше, чем у Spring Security.
Пропасть в производительности будет ещё больше увеличиваться по мере роста цепочки соответствия 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)
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:

Как видно из вышеописанного процесса, пользователь создаётся посредством `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)
## Благодарности
[](https://www.jetbrains.com/community/opensource/#support)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )