Przejdź do treści

Uwierzytelnianie OAuth2 Client Credentials

CloudPrint używa serwerowego OAuth2 Client Credentials. Sekret pozostaje wyłącznie w backend secret store; nie może trafić do przeglądarki, aplikacji mobilnej, skryptu agenta ani publicznego repozytorium.

Utwórz aplikację i scopes

Utwórz osobny client app dla każdego systemu i środowiska. Standard wymaga printers:read, documents:write, print_jobs:write, print_jobs:read; agents:read jest potrzebne tylko dla /agents. Sekret jest wyświetlany raz.

Pobierz i cache'uj token

bash
curl -sS https://public-api.cloudprint.me/oauth/token \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'client_id=YOUR_CLIENT_ID' \
  --data-urlencode 'client_secret=YOUR_CLIENT_SECRET' \
  --data-urlencode 'scope=printers:read documents:write print_jobs:write print_jobs:read'
json
{
  "token_type": "Bearer",
  "expires_in": 900,
  "access_token": "eyJ..."
}

Buforuj token prawie przez 900 sekund. Nie pobieraj nowego przed każdym wydrukiem.

Sprawdź konto i scopes

bash
curl -sS https://public-api.cloudprint.me/api/v1/me \
  -H "Authorization: Bearer $ACCESS_TOKEN"
json
{
  "account_id": "44444444-4444-4444-8444-444444444444",
  "account_name": "Acme Print Ops",
  "client_app_id": "33333333-3333-4333-8333-333333333333",
  "client_app_name": "Warehouse integration",
  "scopes": [
    "printers:read",
    "documents:write",
    "print_jobs:write",
    "print_jobs:read"
  ]
}

Ten test pokazuje konto, aplikację i scopes tokenu, zapobiegając drukowi na niewłaściwym koncie.

Obsłuż błędy

400 invalid_scope oznacza scope nieznany lub nieprzyznany. 401 invalid_client na token endpoint oznacza złe credentials. 401 na API: odśwież token raz i ponów raz. 403 oznacza brak scope w ważnym tokenie.

Rotacja

Wydaj zamiennik, wdróż przez secret manager i sprawdź /me przed unieważnieniem starego klienta. Nie loguj sekretu ani pełnego tokenu; zapisuj X-Request-Id.

Lista kontrolna przed wdrożeniem

  • Korzystaj z wychodzącego połączenia agenta; nie wystawiaj portów drukarki do internetu.
  • Zapisuj stabilny identyfikator drukarki, a nie tylko jej nazwę.
  • Sprawdzaj format dokumentu, rozmiar strony i orientację przed utworzeniem zadania.
  • Jawnie obsługuj status końcowy, ponowienia i ochronę przed podwójnym drukiem.

Następne kroki

Przewodniki dotyczące integracji CloudPrint, podłączania lokalnego agenta i obsługi procesów drukowania.