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

OSCHINA-MIRROR/baomidou-kisso

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

kisso = cookie sso

kisso — это швейцарский армейский нож для быстрой разработки Java Web-систем единого входа (SSO) на основе Cookie.

Другие открытые проекты:

  • Mybatis-Plus CRUD — быстрый фреймворк для разработки;
  • Mybatis-Plus Enterprise Edition — примеры расширенных функций;
  • AiZuDa — проект для организации.

Разделение на фронтэнд и бэкэнд: доступны два варианта:

  • билет в заголовке запроса;
  • Cookie-файл.

Для связи есть группа в WeChat: wx153666.

Репозиторий: https://search.maven.org/search?q=g:com.baomidou.

  <groupId>com.baomidou</groupId>
  <artifactId>kisso</artifactId>
  <version>3.9.3</version>
</dependency>```

Обратите внимание, что spring boot 2.x использует версию 3.9.0 и ниже.

**Демо-версии для тестирования:**
* kisso-spring-boot;
* kisso_springmvc;
* kisso_jfinal;
* kisso_crossdomain;
* kisso-oauth2-demo.

**Документация по использованию:**

Создание JWT-токена:
```String jwtToken = SSOToken.create().setId(1).setIssuer("admin").setOrigin(TokenOrigin.HTML5).getToken();```

Анализ токена:
```SSOToken ssoToken = SSOToken.parser(jwtToken);```

Установка Cookie:
```SSOHelper.setCookie(request, response, new SSOToken().setId(String.valueOf(1)).setIssuer("admin"));```

Если вы хотите одновременно поддерживать Cookie и заголовок, настройте следующим образом:
```ssoToken.setOrigin(TokenOrigin.HTML5);```

**Spring Boot:**
```@ControllerAdvice
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // SSO 授权拦截器
        SSOSpringInterceptor ssoInterceptor = new SSOSpringInterceptor();
        ssoInterceptor.setHandlerInterceptor(new LoginHandlerInterceptor());
        registry.addInterceptor(ssoInterceptor).addPathPatterns("/**").excludePathPatterns("/v1/sso/**");
    }
}```

По умолчанию используется алгоритм HS512:
```// HS512 密钥,配置参数 kisso.config.sign-key
SSOHelper.getHS512SecretKey()```

Чтобы переключиться на алгоритм RS512, выполните следующие шаги:
1. Настройте алгоритм в файле конфигурации: ```kisso.config.sign-algorithm = RS512```.
2. Настройте приватный и публичный ключи сертификата. По умолчанию они находятся в каталоге resources.

Генерация RSA-ключа:
```$ keytool -genkeypair -alias jwtkey -keyalg RSA -dname "CN=llt" -keypass keypassword -keystore key.jks -storepass jkspassword```

Генерация публичного сертификата:
```$ keytool -export -alias jwtkey -file public.cert -keystore key.jks -storepass jkspassword```

Генерация публичного сертификата в формате .cer:
```$ keytool -exportcert -alias jwtkey -file public.cer -keystore key.jks -storepass jkspassword```

Генерация публичного сертификата в формате .pem:
```keytool -export -rfc -keystore key.jks --alias jwtkey -file public.pem -storepass jkspassword```

**Общие стратегии безопасности:**

Secure:
Cookie с пометкой Secure должны отправляться на сервер только через HTTPS. Это помогает защитить Cookie от перехвата и изменения при передаче между браузером и веб-сервером.

HTTPOnly:
Настройка HTTPOnly позволяет предотвратить доступ к Cookie через клиентские скрипты, такие как document.cookie. Это помогает защититься от XSS-атак.

SameSite:
Свойство SameSite позволяет запретить отправку Cookie при межсайтовых запросах. Это может помочь предотвратить CSRF-атаки.

Возможные значения свойства SameSite:
* Strict — разрешает отправку Cookie только для запросов с того же сайта.
* Lax — разрешает отправку Cookie для некоторых сторонних запросов.
* None — отправляет Cookie независимо от источника запроса.

В настоящее время проблемы с получением Cookie могут быть связаны с тем, что ранее значение по умолчанию было None, а после Chrome 80 оно стало Lax.

Безопасная конфигурация:
```kisso:
  config:
    # 开启 https 有效,传输更安全
    cookie-secure: true
    # 防止 XSS 防止脚本攻击
    cookie-http-only: true
    # 防止 CSRF 跨站攻击
    cookie-same-site: Lax
    # 加密算法 RSA
    sign-algorithm: RS512
    ...```

**Поддержка actuator basic аутентификации:**

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

Spring Boot Web:
```@Bean
@ConditionalOnMissingBean
public FilterRegistrationBean basicAuthenticateFilter() {
  FilterRegistrationBean registrationBean = new FilterRegistrationBean();
  registrationBean.setFilter(new BasicAuthenticateFilter("用户名", "密码"));
  registrationBean.addUrlPatterns("/actuator", "/actuator/**");
  registrationBean.setOrder(Integer.MAX_VALUE);
  return registrationBean;
}```

Spring Cloud Gateway Webflux:
```@Bean
public BasicAuthenticateWebfluxFilter BasicAuthenticateWebfluxFilter() {```

Введение

java на основе Cookie SSO промежуточное ПО kisso низкокодовая компонентная библиотека http://doc.aizuda.com Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

Язык

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

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