Começar
Integre em minutos: escolha Java ou Node.js, copie as credenciais, crie /auth no BFF e proteja a primeira rota.
Receita Spring Boot (Maven)
Entre no Console GateKeeper com sua conta de tenant, ou registre interesse se ainda não tiver acesso.
No dashboard, abra Começar integração, escolha Java e copie a config pronta (application.yml).
<dependency>
<groupId>cloud.gatekeeperid</groupId>
<artifactId>gatekeeper-spring-boot-starter</artifactId>
<version>0.3.5</version>
</dependency>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}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.
@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.