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

OSCHINA-MIRROR/geek_qi-ace-gate

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

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

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

  • Описание: В тексте представлена диаграмма архитектуры системы AG-Gate.

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

  1. Управление пользователями.
  2. Управление ролями.
  3. Управление меню и действиями.
  4. Ведение журнала операций.
  5. Регистрация клиентов.
  6. Управление сервисами и авторизация.
  7. Чёрные и белые списки шлюзов и ограничения IP (требуется доработка).
  8. Мониторинг состояния сервисов и оповещения (требуется доработка).
  9. Отслеживание сервисов (требуется доработка).

Быстрое развёртывание:

  • Руководство по развёртыванию:
    • Запустить скрипты базы данных в ace-gate-way.
    • Запустить Redis.
    • Изменить конфигурацию Redis и базы данных в ace-gate-way.
    • Использовать JDK 1.8.
    • Установить IDE-плагин, например Lombok.
  • Инструкция по запуску:
    • Последовательно запустить ace-gate-eureka и ace-gate-way.
    • Посетить http://localhost:8762/index с начальным паролем admin/admin.
    • Запустить примеры авторизации ace-gate-demo-provider и ace-gate-demo-client.
    • Посетить http://localhost:8764/test для просмотра результатов.

Уведомления о сбоях служб:

В тексте описывается возможность расширения различных уведомлений о сбоях в зависимости от потребностей, а также возможность автоматического перезапуска служб после сбоя.

Руководство пользователя:

AG-Gate в основном используется для JWT-авторизации защищённых сервисов и внешней авторизации API. В тексте говорится, что обычно без сохранения состояния доступ к API делится на вызовы между сервисами и вызовы, предоставляемые внешним системам.

Принципы:

Только защищённые сервисы должны быть зарегистрированы.

Инициализация JWT-токена аутентификации:

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

Внутренняя авторизация между службами:

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

Рекомендации по внутренней авторизации:

Рекомендуется обратиться к примеру ace-gate-demo.

Как включить авторизацию для сервисов-поставщиков:

  • Зависимости 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
  • Включение конфигурации:
/**
 * Created by ace on 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: 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;

    @Bean
    public FeignInterceptor authenticationInterceptor() {
        return new FeignInterceptor(clientId, secret, authHeader, authHost, tokenHead);
    }

}

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

Зарегистрировать адреса и способы доступа к защищённым службам. Авторизация клиента (получить clientId и secret и разрешить доступ к службам).

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

Клиент и ключ запрашивают действительный токен. Запрос JSON:

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

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

http://[адрес сервера ace-gate-way]:[конфигурированный порт]/api/authen/auth

Действительный токен используется для вторичного доступа к сервису.

Запрос заголовка: информация о конфигурации из application.yml ace-gate-way:

[${gate.api.header}]:[${gate.api.tokenHead}][пробел][волшебный токен]
По умолчанию:
access-token:ApiGateToken ## Способ создания белого и чёрного списков внешних IP-адресов

с реализацией

# Приглашаем к обсуждению
![img](http://ofsc32t59.bkt.clouddn.com/17-06-16/1497595760484.jpg)

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

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

Введение

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

Обновления

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

Участники

все

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

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