datacore/hub-sdk

Datacore Hub SDK pra produtos integrados (Symfony bundle). Valida JWT via JWKS + chama API do Hub via OAuth client_credentials.

Maintainers

Package info

bitbucket.org/datacoresolutions/datacore-php-sdk

Type:symfony-bundle

pkg:composer/datacore/hub-sdk

Transparency log

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

dev-main 2026-07-09 12:46 UTC

This package is auto-updated.

Last update: 2026-07-09 12:46:44 UTC


README

SDK oficial pra produtos integrados com o Datacore Hub (Identity Provider central + billing + onboarding).

Instalação

Adicione no composer.json do seu projeto (Symfony 7.4+):

{
    "repositories": [
        {
            "type": "path",
            "url": "../datacore-php-sdk"
        }
    ],
    "require": {
        "datacore/hub-sdk": "@dev"
    }
}

Quando publicarmos em Packagist privado/Satis, troca por:

"datacore/hub-sdk": "^1.0"

Configuração

config/packages/datacore_hub.yaml:

datacore_hub:
    issuer_url: 'https://hub.datacore.com'    # ou http://localhost:8000 em dev
    client_id: '%env(DATACORE_HUB_CLIENT_ID)%'
    client_secret: '%env(DATACORE_HUB_CLIENT_SECRET)%'
    jwks_cache_ttl: 86400  # 24h

bundles.php:

Datacore\HubSdk\DatacoreHubBundle::class => ['all' => true],

Uso — Validar JWT do Hub

use Datacore\HubSdk\JwtValidator;

public function __construct(private JwtValidator $validator) {}

public function someProtectedAction(Request $request): Response
{
    $jwt = $request->headers->get('Authorization', '');
    $jwt = preg_replace('/^Bearer\s+/i', '', $jwt);
    
    try {
        $token = $this->validator->validate($jwt);
        $userId = $token->getSubject();
        $scopes = $token->getScopes();
        // ...
    } catch (\RuntimeException $e) {
        return new Response('Invalid token', 401);
    }
}

Uso — Chamar API do Hub (server-to-server)

use Datacore\HubSdk\HubApiClient;

public function __construct(private HubApiClient $hub) {}

public function listMySubscriptions(): array
{
    $response = $this->hub->request('GET', '/api/v1/subscriptions');
    return $response->toArray();
}

Componentes

ClasseFunção
JwksClientBusca + cacheia chaves públicas do Hub (/.well-known/jwks.json)
JwtValidatorValida assinatura JWT + claims (iss/exp/nbf)
ValidatedTokenWrapper imutável dos claims pós-validação
HubApiClientHTTP client com OAuth client_credentials automático

Sprint 4 (futuro)

  • WebhookHandler abstrato pra receber eventos do Hub (subscription.activated, etc.) com HMAC validation

Licença

Proprietary — Datacore Tecnologia Ltda.