Começar

Quickstart

Integre em minutos: escolha Java ou Node.js, copie as credenciais, crie /auth no BFF e proteja a primeira rota.

Receita Spring Boot (Maven)

  1. 1

    Acesso ao Console

    Entre no Console GateKeeper com sua conta de tenant, ou registre interesse se ainda não tiver acesso.

  2. 2

    Copie as credenciais

    No dashboard, abra Começar integração, escolha Java e copie a config pronta (application.yml).

  3. 3

    Instale a SDK Maven

    <dependency>
      <groupId>cloud.gatekeeperid</groupId>
      <artifactId>gatekeeper-spring-boot-starter</artifactId>
      <version>0.3.5</version>
    </dependency>
  4. 4

    Configure o application.yml

    Cole o YAML copiado do Console, ou use o modelo abaixo e preencha as variáveis.

    gatekeeper:
      enabled: true
      base-url: https://api.gatekeeperid.cloud/sdk/integration/v1
      tenant-id: ${GATEKEEPER_TENANT_ID}
      client-id: ${GATEKEEPER_CLIENT_ID}
      application-name: my-api
      environment: dev
      fail-mode: DENY
      sync:
        enabled: true
      hmac:
        enabled: true
        secret: ${GATEKEEPER_HMAC_SECRET}
  5. 5

    Crie /auth no seu BFF (GatekeeperAuthService)

    A SDK não expõe login na sua API. Você cria um controller (ex.: /auth) que delega ao GatekeeperAuthService. Dados do seu produto (endereço, perfil, etc.) ficam no seu serviço — o vínculo com o GateKeeper é o campo external_id.

    @RestController
    @RequestMapping("/auth")
    public class AuthController {
      private final GatekeeperAuthService gk;
      private final AppUserService users; // seu domínio
    
      @PostMapping("/login")
      public AuthSessionResponse login(@RequestBody LoginRequest req) {
        return gk.login(req);
        // { access_token, refresh_token, expires_in, external_id }
      }
    
      @PostMapping("/register")
      public Map<String, Object> register(@RequestBody RegisterBody body) {
        RegisterResponse gkUser = gk.register(
            new RegisterRequest(body.email(), body.password(),
                null, body.name(), body.lastName(), null));
        // gkUser.externalId() → vínculo no seu banco (endereço, etc. ficam aqui)
        users.createProfile(gkUser.externalId(), body.address());
        return Map.of(
            "access_token", /* se fizer login após register */,
            "external_id", gkUser.externalId());
      }
    
      @PostMapping("/refresh")
      public AuthSessionResponse refresh(@RequestBody RefreshTokenRequest req) {
        return gk.refresh(req);
      }
    
      @GetMapping("/me")
      public MeResponse me(@RequestHeader("Authorization") String auth) { ... }
    }

    Sessão canônica (AuthSessionResponse): access_token, refresh_token, expires_in, external_id. Também: logout, social, forgot/reset/change password, deleteAccount, updateUserGkRole.

  6. 6

    Proteja uma rota

    @GatekeeperProtected(permission = "orders:read")
    @GetMapping("/orders")
    public List<Order> list() { return List.of(); }

    No startup a SDK envia o integration-plan. No Console, aprove o plano em Integration Plans.