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

OSCHINA-MIRROR/geek_qi-ace-gate

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

Введение

AG-Gate — это система шлюза, основанная на Spring Cloud, которая обеспечивает авторизацию пользовательских ресурсов и управление доступом к API с использованием токена аутентификации JWT. Она поддерживает авторизацию и фильтрацию сервисов, зарегистрированных в центре регистрации Eureka, и расширяет возможности уведомлений о недоступности сервисов.

img img

Архитектура шлюза

img

Список функций

  • Управление пользователями
  • Управление ролями
  • Управление меню и действиями
  • Журнал операций
  • Регистрация клиентов
  • Управление и авторизация услуг
  • Белый и черный списки шлюза и ограничение по IP (в разработке)
  • Мониторинг состояния службы и уведомления (в разработке)
  • Отслеживание служб (в разработке)

Быстрое запуск

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

  • Выполнить скрипт db в ace-gate-way
  • Запустить Redis
  • Изменить конфигурацию Redis и базы данных в ace-gate-way
  • JDK 1.8
  • Установить плагин Lombok для вашего IDE (подробнее можно найти через поиск)

Инструкции по запуску

  • Последовательно запустить ace-gate-eureka и ace-gate-way
  • Пройти по адресу http://localhost:8762/index, начальное пароль: admin/admin
  • Запустить примеры аутентификации ace-gate-demo-provider и ace-gate-demo-client
  • Пройти по адресу http://localhost:8764/test, чтобы проверить работу системы# Оповещения о недоступности сервисов img Можно расширять различные виды уведомлений в зависимости от потребностей; также можно использовать хуки для автоматического перезапуска сервисов после недоступности.

Пользовательское руководство

AG-Gate主要用于服务间的JWT身份验证以及对外API的身份验证。通常我们的无��态API访问方式可以分为服务间相互调用和提供给外部系统的调用。 AG-Gate主要用于 служебной JWT-идентификации и аутентификации внешних API. Обычно наши бессостоятельные методы доступа к API можно разделить на взаимные вызовы между службами и предоставление доступа внешним системам.

Принципы

  • Только те службы, которые требуют защиты, должны регистрироваться.
  • Лишь те службы, которые нуждаются в защите, должны регистрироваться.

Инициализация jwt токена аутентификации

Файл application.yml в ace-gate-way влияет на информацию, связанную с аутентификацией. Файл application.yml в ace-gate-way влияет на информацию, связанную с аутентификацией. img

Аутентификация между внутренними сервисами

img

  • Регистрация адреса защищённой услуги и способа её вызова
  • Авторизация клиента (получение clientId и secret, одновременно предоставляется право доступа к услуге)
  • Регистрация адреса защищенной службы и способа ее вызова
  • Авторизация клиента (получение clientId и secret, одновременно предоставляется право доступа к службе)

Внутренняя система аутентификации

Пример можно найти в ace-gate-demo Пример можно найти в ace-gate-demo

Как включить проверку прав доступа на стороне сервера

Maven зависимости, если нет - соберите самостоятельно

<dependency>
    <groupId>com.github.wxiaoqi</groupId>
    <artifactId>ace-gate-agent</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Maven зависимости, если они отсутствуют — соберите самостоятельно

<dependency>
    <groupId>com.github.wxiaoqi</groupId>
    <artifactId>ace-gate-agent</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Настройка конфигурации

gate:
  client:
    # Адрес ace-gate-way
    authHost: http://localhost:8765/api/authen
    # Заголовок для аутентификации, совпадает с клиентским
    authHeader: access-token

Настройка конфигурации

gate:
  client:
    # Адрес ace-gate-way
    authHost: http://localhost:8765/api/authen
    # Заголовок для аутентификации, совпадает с клиентским
    authHeader: access-token
```### Включение конфигурации
```java
/**
 * Создано ace на 2017/7/6.
 */
@Configuration
public class ApiWebAppConfig extends WebMvcConfigurerAdapter {
    @Value("${gate.client.authHost}")
    private String authHost;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new ApiInterceptor(authHost)).addPathPatterns("/**");
        super.addInterceptors(registry);
    }
}

Включение прокси-перехватчика, метод REST следует пометить @ApiGateSecurity

@ApiGateSecurity
@RequestMapping(value = "/user/un/{username}/system", method = RequestMethod.GET)
@ResponseBody
public String getSystemsByUsername(@PathVariable("username") String username){
    int userId = userBiz.getUserByUsername(username).getId();
    return JSONObject.toJSONString(menuBiz.getUserAuthoritySystemByUserId(userId));
}

Как автоматически добавить информацию аутентификации в клиент Feign?

Maven зависимости, если нет — соберите самостоятельно

<dependency>
    <groupId>com.github.wxiaoqi</groupId>
    <artifactId>ace-gate-agent</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Конфигурация импорта

gate:
  client:
  # Клиентская информация, зарегистрированная на странице
    clientId: admin-ui
    secret: test
    # Сохраняет согласованность с заголовком authHeader серверной части
    authHeader: access-token
    authHost: http://localhost:8765/api/authen
    # Сохраняет согласованность с ace-gate-way gate.api.tokenHead
    tokenHead: ApiGateToken

Активация конфигурации

@Configuration
public class FeignApiConfig {
    @Value("${gate.client.clientId}")
    private String clientId;
    @Value("${gate.client.secret}")
    private String secret;
    @Value("${gate.client.authHeader}")
    private String authHeader;
    @Value("${gate.client.authHost}")
    private String authHost;
    @Value("${gate.client.tokenHead}")
    private String tokenHead;
}``````java
@Bean
public FeignInterceptor authenticationInterceptor() {
    return new FeignInterceptor(clientId, secret, authHeader, authHost, tokenHead);
}

Авторизация внешних API

  • Указание адреса защиты сервиса и способа доступа
  • Получение авторизации клиента (получение clientId и secret, одновременно предоставляется право доступа к службе)

Способ получения токена для внешнего клиента

  • Получение действительного токена с помощью clientId и секрета img

JSON запрос

{
"clientId": "gate-demo-client",
"secret": "test"
}

Адрес запроса, адрес, предоставленный ace-gate-way

http://[сервер развертывания ace-gate-way]:[конфигурируемый порт]/api/authen/auth
  • Получение вторичного доступа к услуге с использованием действительного токена

img

Заголовки запроса

Ниже приведены конфигурационные данные из файла application.yml проекта ace-gate-way.

[${gate.api.header}]:[${gate.api.tokenHead}] [пробел] [волшебный токен]
Пример по умолчанию:
access-token: ApiGateToken eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJnYXRlLWRlbW8tY2xpZW50IiwiY3JlYXRlZCI6MTQ5OTk0NzAzNzE1NCwiZXhwIjoxNDk5OTU0MjM3fQ.eL3Ucd2Oh166PDcmHLsKK2A0uJZ6QPxLqRac6enQacBEgQwc2I0qJtkui1V0WjB70VWHpRbHgmzps_dM9jKg0A

Внешний доступ через белый и черный списки IP-адресов

Реализация в процессе

Добро пожаловать к обсуждению

img

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

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

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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