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

OSCHINA-MIRROR/dp_group-dp-passport

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

DP-PASSPORT

Проект представляет собой

одноточечную систему входа на основе SpringBoot, которая предоставляет комплексное решение SSO (Single Sign-On), включающее в себя следующие особенности:

  1. Хранение информации о разрешении доступа на вход с использованием cookie, с дружественным уведомлением при отключении cookie.
  2. Поддержка входа для различных типов терминалов, включая веб и приложения, а также поддержка одноточечного входа для разных доменов верхнего уровня.
  3. Использование модели одноразового разрешения доступа (ticket) для повышения безопасности и предотвращения атак повторного воспроизведения.
  4. Применение шифрования с открытым и закрытым ключами для усиления защиты паролей.
  5. Гибкая настройка для различных типов терминалов и адаптация к различным сценариям разрешений доступа.
  6. Отсутствие необходимости вмешательства в бизнес-систему, достаточно добавить зависимость от паспорта и настроить параметры.
  7. Поддержка настройки различных стратегий доступа в соответствии с различными сценариями.
  8. Поддержка конфигурации анонимного доступа в стиле Ant.
  9. Возможность выхода из системы на стороне клиента, проверка состояния входа (поддержка междоменного доступа для веб-терминалов).
  10. Полные комментарии кода, многоуровневая структура и хорошая расширяемость, 100% прохождение проверки кода Alibaba Cloud, что облегчает последующую разработку.

Структура проекта

  1. dp-passport: агрегатный проект.
  2. dp-passport-common: базовый общий модуль.
  3. dp-passport-server: модуль аутентификации.
  4. dp-passport-client: клиентский модуль.
  5. dp-passport-admin: модуль управления бэкендом.
  6. dp-passport-samples: базовые примеры.

Система структуры

image

Метод подключения к одноточечному входу

  1. Зависимость Maven:
<dependency>
    <groupId>net.chenlin</groupId>
    <artifactId>dp-passport-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
  1. Конфигурация application.yml (см. описание параметров в разделе «Конфигурация клиента»).
ids:
  client:
    client-type: web
    app-code: passportTest
    auth-id-cookie-name: dpAuthId
    server-name: http://samplesit.chenlintech.com:9090/sample
    auth-server-url: http://passportsit.chenlintech.com:8080/ids
    cookie-domain: chenlintech.com
  1. Конфигурация ids-access-policy.xml (настройка пути адреса анонимного доступа, возможность расширения других стратегий).
<?xml version="1.0" encoding="utf-8"?>
<access-policy>

    <!-- 1. По умолчанию используется стратегия доступа: если текущий файл конфигурации не содержит URL, применяется стратегия по умолчанию.
            ANON_ACCESS: доступ без предоставления информации для входа, request также не может получить информацию о пользователе.
            AUTH_ACCESS: требуется вход перед доступом, request может получить информацию о пользователе.
            ROUTER_ACCESS: маршрутизация доступа, request может получать информацию о пользователе во время входа в систему, и также может получать информацию о пользователе без входа, но в этом случае она будет пустой.
         2. Приоритет стратегии: ANON_ACCESS > AUTH_ACCESS > ROUTER_ACCESS.
         3. Адресное сопоставление: url-pattern поддерживает правила сопоставления адресов в стиле ant. -->
    <default-access-policy>AUTH_ACCESS</default-access-policy>

    <!-- Анонимный доступ: не проходит через обработку passport-filter, обычно это статические ресурсы, которые не требуют получения информации о запросе пользователя. -->
    <anon-access>
        <url-pattern>/**/*.css</url-pattern>
        <url-pattern>/**/*.js</url-pattern>
        <url-pattern>/**/*.jpg</url-pattern>
        <url-pattern>/**/*.ico</url-pattern>
        <url-pattern>/**/test/anonAccess</url-pattern>
    </anon-access>

    <!-- Доступ с авторизацией: необходимо войти в систему перед доступом. -->
    <auth-access>
        <url-pattern>/**/test/authAccess</url-pattern>
    </auth-access>

    <!-- Маршрутизация доступа: не требует принудительного входа пользователя для доступа, состояние входа запроса может получить информацию о пользователе, состояние без входа получает пустую информацию о пользователе. -->
    <router-access>
        <url-pattern>/**/test/routerAccess</url-pattern>
    </router-access>

</access-policy>

Функции клиента

  1. Выход из системы: — веб-терминал: [server-name]/logout, перенаправление на адрес выхода сервера. — терминал приложения: [server-name]/logout, параметр [auth-id-cookie-name] содержится в header или param.
  2. Проверка статуса входа: — веб-терминал: [server-name]/authStatus, возврат jsonp. — терминал приложения: [server-name]/authStatus, параметр [auth-id-cookie-name] содержится в header или param.

Инструкция по использованию

  1. Среда разработки: JDK, Maven, MySQL, Redis, IDEA, JMeter.
  2. Изменить хост: — 127.0.0.1 passportsit.chenlintech.com. — 127.0.0.1 samplesit.chenlin.com.
  3. Скрипт базы данных находится в каталоге doc [dp-emp.sql], таблица пользователей является примером, который можно дополнительно разработать в соответствии с потребностями.
  4. Скрипт тестирования интерфейса находится в каталоге doc [паспорт входа в тест план.jmx].
  5. Пароль по умолчанию для пользователя паспорта: admin, пароль: 1.

Обратная связь

  • Группа обмена QQ: [уже заполнена], номер DingTalk: 23119937.
  • Если вы заинтересованы в проекте, пожалуйста, следите за ним и отмечайте его звёздочкой. В будущем будут периодически публиковаться обновления.

Конфигурация сервера

  1. auth-id-cookie-name: имя токена авторизации, имя cookie или имя токена, согласованное с сервером.
  2. welcome-page: страница приветствия, если после входа в систему redirect-адрес пуст, перейдите по этому адресу.
  3. cookie-domain: домен cookie, домен верхнего уровня.
  4. redis-host-and-port: адрес redis, формат 127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381.

Конфигурация клиента

  1. client-type: тип клиента, настройка как web или app, по умолчанию — web.
  2. app-code: код доступа приложения, обязательный.
  3. auth-id-cookie-name: название токена авторизации, название cookie или название токена, согласуется с сервером.
  4. server-name: домашняя страница приложения, может быть не настроена для клиента приложения.
  5. auth-server-url: адрес сервера аутентификации, обязательный.
  6. cookie-domain: домен cookie для веб-клиента, домен верхнего уровня, клиент приложения может не настраиваться.
  7. Пример конфигурации доступа в стиле Ant см. в каталоге ресурсов dp-samples [ids-access-policy.xml].

SessionData: получение sessionData атрибута из запроса после входа в систему

  1. userId: идентификатор пользователя, получение уникального идентификатора пользователя.
  2. userAlias: логин пользователя.
  3. isLogin: статус входа: 1 — статус входа, 0 — статус без входа, зарезервированный атрибут принудительного выхода.
  4. userEnable: статус пользователя: 1 — нормальный, 0 — отключённый.
  5. rememberMe: запомнить меня, true сохраняет логин в течение 7 дней, false по умолчанию 30 минут.
  6. loginType: тип входа: 1 — веб-терминал, 2 — терминал приложения.

Определение кода ошибки

Код ошибки Сообщение об ошибке
0000 Обработка прошла успешно
1000 Бизнес-исключение
9999 Системное исключение
4000 Пользователь уже вошёл в систему
4001 Пользователь не вошёл в систему
4002 Имя пользователя не может быть пустым
4003 Пароль не может быть пустым
4004 Текущий пользователь не существует
4005 Неправильный пароль
4006 Аккаунт заблокирован
4007 Вы были принудительно вышли из системы

Введение

На основе SpringBoot 2.0 создана система одноточечного входа, поддерживающая различные типы терминалов для веб- и app-логинов. Система поддерживает подключение к различным доменам верхнего уровня. Для предотвращения атак используется модель одноразового предоставления прав доступа (ticket). Для передачи паролей применяется асимметричное шифров... Расширить Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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