Перейти к основному содержимому

Межсервисное взаимодействие

При вызове методов сервиса бизнес-логики проверяется наличие у клиента токена доступа и областей разрешения доступа.

Функции безопасного взаимодействия между сервисами реализованы с помощью Spring Security.

Существуют следующие способы настроить необходимые области разрешений доступа:

  • Зарегистрировать Spring-компонент, реализующий интерфейс MethodAndScopesProvider.

    Пример этого способа представлен в классе ru.platform.example.fastStartComponents.micriserviceInteraction.DemoMethodAndScopesProvider.

  • Указать в аннотации @PlatformCommand из функционала SystemApi необходимые области разрешений доступа в аргументе authorizationExplicitScopes.

Настройка модуля межсервисного взаимодействия microservice-interaction включает следующие шаги:

  1. Подключение модуля SystemApi.

  2. Добавление в build.gradle для spring-boot-starter-security следующих зависимостей:

    • spring-boot-starter-security;
    • spring-boot-starter-oauth2-client;
    • spring-boot-starter-oauth2-resource-server.

Следующий блок кода файла application.yaml демонстрирует включение функционала межсервисного взаимодействия microservice-interaction.

platform:
microservice-interaction:
starter:
enabled: true

Следующий блок кода файла build.gradle демонстрирует зависимости, необходимые для работы с OAuth2 и Spring Security.

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security:3.4.4'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client:3.4.4'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server:3.4.4'
}

В результате Java-класс ru.platform.starterConfiguration.microserviceInteraction.MicroserviceInteractionSpringBeansCreationConfiguration будет включен и сконфигурирован.

Следующий блок кода демонстрирует создание REST-контроллера с аннотацией @PlatformController.

@RestController
@PlatformController
public class MyRestController {
...
}

Следующий блок кода демонстрирует использование аннотации @PlatformCommand для описания метода REST-контроллера с настройкой авторизации.

@PlatformCommand(
description = "/api/system",
cmd = "Get",
commands = {"System.GET.Get"},
detectionCommand = "Get",
urn = "/api/system",
type = CommandType.GET,
queryArguments = {},
argumentType = EmptyClassType.class,
returnType = EmptyClassType.class,
authorizationExplicitScopes = {"reports:tasks:read"}
)