AG-Gate — это основанная на Spring Cloud система шлюза, которая обеспечивает авторизацию ресурсов пользователей и управление авторизацией API. Она использует токены аутентификации JWT для авторизации и поддерживает регистрацию сервисов в реестре Eureka и их авторизацию, а также расширяет уведомления о сбоях сервисов в Eureka.
Архитектура шлюза:
Список функций:
Быстрое развёртывание:
Уведомления о сбоях служб:
В тексте описывается возможность расширения различных уведомлений о сбоях в зависимости от потребностей, а также возможность автоматического перезапуска служб после сбоя.
Руководство пользователя:
AG-Gate в основном используется для JWT-авторизации защищённых сервисов и внешней авторизации API. В тексте говорится, что обычно без сохранения состояния доступ к API делится на вызовы между сервисами и вызовы, предоставляемые внешним системам.
Принципы:
Только защищённые сервисы должны быть зарегистрированы.
Инициализация JWT-токена аутентификации:
Изменения в application.yml в ace-gate-way влияют на информацию, связанную с аутентификацией.
Внутренняя авторизация между службами:
Регистрация адресов и способов доступа к защищённым сервисам. Доступ к авторизации клиента (получение clientId и secret, а также разрешение доступа к сервисам).
Рекомендации по внутренней авторизации:
Рекомендуется обратиться к примеру ace-gate-demo.
Как включить авторизацию для сервисов-поставщиков:
<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);
}
}
@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-клиенты автоматически добавляют информацию об авторизации:
<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 )