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

OSCHINA-MIRROR/easun_zhu-xu-sso

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

Проект xu-sso

Проект xu-sso — это облегчённая платформа для управления унифицированными аутентификацией и авторизацией, цель которой — помочь разработчикам быстро создать единую систему аутентификации и авторизации. Она характеризуется простотой подключения, низким уровнем вмешательства и слабой связанностью компонентов.

Платформа поддерживает перехват API-интерфейсов, но в настоящее время ограничивается только веб-интерфейсами с разделением на клиентскую и серверную части. Сохранение токенов зависит от файлов cookie. В новой версии поддерживается заголовок (head).

Функции проекта:

  1. Единая точка входа.
  2. Управление пользователями.
  3. Управление отделами.
  4. Управление проектами.
  5. Управление ролями.
  6. Управление полномочиями.
  7. API-интерфейсы.

Версия 1.2.2

  • Оптимизация инструмента Redis.
  • Устранена проблема, связанная с возможным частым созданием соединений Redis и освобождением ресурсов.
  • Добавлена поддержка режима Sentinel. В настоящее время поддерживаются режимы standalone, Sentinel и кластерный режим.
  • Если используется режим Sentinel, необходимо добавить параметр конфигурации: masterID.
    • com.xu.sso.redis.masterId = mymaster.

Версия 1.2.1

  • Поддержка правил фильтрации Ant. | Wildcard | Description | | :-- |:--:| | ? | Соответствует любому одиночному символу | | * | Соответствует нулю или любому количеству символов, не включая / | | ** | Соответствует нулю или большему количеству каталогов, не включая / |
Path Description
/app/p?ttern Соответствует /app/pattern и /app/pXttern, но не включает /app/pttern
/**/example Соответствует корневому пути проекта /project/example, /project/foow/example и т. д.
/app/delete* Соответствует (Matches) /app/deleteUser, /app/deleteApp и т.д.

Следует отметить, что сопоставление путей следует принципу «самого длинного совпадения» (has more characters). Например, /app/dir/file.jsp соответствует обоим шаблонам /**/.jsp и /app/dir/.jsp, поэтому в конечном итоге будет использоваться последний шаблон.

Версия 1.2.0

Добавлены API для входа и выхода из системы. Клиент поддерживает заголовок, позволяя помещать токен в заголовок при запросе, где имя заголовка совпадает с именем файла cookie, оба из которых являются токенами.

API для входа: http://localhost:8282/api/login. Запрос:

{
  "appId":"",
  "username":"",
  "password":""
}

Ответ:

{
  "code":"Success",
  "msg":"成功",
  "token":"91be1d5d818943c0b50bd368284bc01e"
}

API выхода: http://localhost:8282/api/logout. Запрос:

{
  "token":"91be1d5d818943c0b50bd368284bc01e"
}

Ответ:

{
    "code": "Success",
    "msg": "成功"
}

Инструкция по установке

  1. Выполните SQL для создания таблиц. При инициализации будет создан пользователь admin. Рекомендуется при инициализации использовать свой адрес электронной почты, поскольку все роли и полномочия в этой системе привязаны к определённым проектам.
  2. Проект app-sso-server является сервером аутентификации, который настраивается через файл application-dev.properties.
    • Добавьте конфигурацию Redis, рекомендуется использовать кластеры Redis. Если вы используете кластеры Redis, замените app-sso-server и app-sso-web на RedisUtil на RedisClusterUtil, а sso-client на ClientRedisUtil и перекомпилируйте.
    • Добавьте почтовый домен компании для проверки регистрации. Пользователи без адресов электронной почты компании не смогут зарегистрироваться или войти в систему. Администраторы с полномочиями могут добавлять пользователей через app-sso-web. Эти пользователи не будут ограничены почтовым доменом компании.
    • Настройте параметры уведомлений по электронной почте для отправки регистрационных сообщений и сообщений для сброса пароля. Без настройки невозможно получить регистрационные пароли или сбросить их.
    • Добавьте параметры источника данных.
  3. Проект app-sso-web является проектом для администрирования, который управляет пользователями, проектами и полномочиями. Он настраивается аналогично проекту сервера.
    • Следуйте шагам 2 и 3 для настройки сервера.
    • Добавьте конфигурацию сервера аутентификации SSO.
      • com.xu.sso.service.path = http://localhost:8180 (адрес сервера app-sso-server).
      • com.xu.sso.logout.path = /logout (путь выхода пользователя, который не требуется реализовывать в приложении, просто добавьте кнопку выхода на странице и настройте путь выхода здесь).
      • com.xu.sso.app_id = app-sso-web (текущий идентификатор приложения, которое регистрируется, должен оставаться неизменным после регистрации, и его нельзя изменить после регистрации).
      • com.xu.sso.interval = 0 (интервал обновления полномочий приложения, в миллисекундах, -1 означает отсутствие обновления).
  4. После завершения настройки всех проектов используйте команду mvn для упаковки и разверните полученный пакет на сервере.

Инструкции по подключению (сначала загрузите пакет клиента на частный сервер Maven компании)

  • Для приложений с разделением клиентской и серверной частей после успешного входа перенаправьте на настроенную страницу. На стороне клиента необходимо извлечь токен из URL и сохранить его в файле cookie с именем token.
  • В jQuery код для обработки AJAX-запросов и перенаправления после успешного входа выглядит следующим образом:
$.ajaxSetup({
    error: function(xhr,status,error)  {
        if (401 == xhr.status) {
            window.location.href = xhr.responseText;
        } else if (403 == xhr.status) {
            // Можно использовать настраиваемое всплывающее окно
            layer.alert(xhr.responseText, {icon: 5});
        }
    }
});

Способ входа с использованием полномочий

Добавьте зависимость клиента в pom.xml:

<dependency>
    <groupId>com.xu.sso</groupId>
    <artifactId>sso-client</artifactId>
    <version>последняя версия</version>
</dependency>

Настройте параметры свойств:

# Адрес сервера SSO
com.xu.sso.service.path = 
# Путь выхода текущего пользователя (эта функция не предоставляется на стороне сервера, только кнопка выхода на передней панели должна соответствовать пути выхода)
com.xu.sso.logout.path = /logout
# Идентификатор текущего проекта
com.xu.sso.app_id = 
# Время обновления полномочий проекта (в миллисекундах), -1 означает не обновлять
com.xu.sso.interval = 0

# Redis
com.xu.sso.redis.host = 
com.xu.sso.redis.password = 
com.xu.sso.redis.database = 
# Если используется режим Sentinel, укажите masterID, по умолчанию mymaster
com.xu.sso.redis.masterId=mymaster

Добавьте конфигурацию фильтра:

  • Spring Boot не требует явной настройки фильтра, достаточно добавить сканирование пути Spring в классе запуска Application.
    • @ComponentScan(basePackages = {"com.xu.sso"}).
  • Проект Spring: добавьте сканирование пакета в web.xml и убедитесь, что loginFilter находится перед powerFilter. Текст запроса:

org.springframework.web.filter.DelegatingFilterProxy loginFilter /*

powerFilter org.springframework.web.filter.DelegatingFilterProxy powerFilter /* ``` 最后,在认证平台后台管理系统里注册下应用 在后台创建项目的人员,会自动成为项目负责人权限,项目负责人权限可转移,最多可添加3人

接入完成后,在项目中使用时,若需要获取当前登录用户信息,Java后端可使用

UserLoginInfo userLoginInfo = LoginFilter.threadLocal.get();
// 或者通过request获取
UserLoginInfo userLoginInfo = (UserLoginInfo)request.getAttribute(SSOConfig.SSO_USER);

登录后会将用户信息放入到threadLocal跟request中,在页面中,可通过request获取用户信息

Перевод текста на русский язык:

В конце, в системе управления бэкенда платформы аутентификации зарегистрируйте приложение. Сотрудники, создающие проект в бэкенде, автоматически становятся ответственными за проект. Ответственные за проект могут быть переданы, максимум можно добавить 3 человека.

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

UserLoginInfo userLoginInfo = LoginFilter.threadLocal.get(); или UserLoginInfo userLoginInfo = (UserLoginInfo) request.getAttribute (SSOConfig. SSO_USER);

Информация о пользователе будет помещена в threadLocal и request после входа в систему. Вы можете получить информацию о пользователе через request на странице.

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

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

Введение

Лёгкая единая аутентификация, унифицированное управление сотрудниками, проектами и правами доступа. Развернуть Свернуть
AGPL-3.0
Отмена

Обновления (6)

все

Участники

все

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

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