feat(swagger): OAuth2/Keycloak PKCE flow в Swagger UI + docs links

OpenApiConfig:
- Добавлена OAuth2 security scheme (authorization_code flow с Keycloak
  realm `nstart`). Auth/token URLs из ordinis.openapi.oauth.issuer-uri
  configuration property (default: auth.nstart.space/realms/nstart).
- BearerAuth scheme сохранён secondary — для pre-issued tokens из CI/scripts.
- Servers list переупорядочен — prod первый, staging второй.
- Description обновлён с pointer на /docs/ для full integration guide.

application.yml:
- springdoc.swagger-ui.oauth: client-id (env override), use-pkce-with-
  authorization-code-grant=true. Public client `ordinis-swagger`
  настраивается отдельно в Keycloak — see keycloak-setup-swagger-client.md
  в ordinis-infra repo.
- ORDINIS_OPENAPI_OAUTH_ISSUER_URI env var для override realm на разных
  окружениях.

docs/integration/api/read-endpoints.md:
- Swagger UI section обновлён: акцент на Authorize button + Keycloak
  PKCE login (no client_secret needed), tip про bearerAuth fallback.

docs/index.md:
- Добавлен tab "Я хочу пощупать API" с link на Swagger UI.

После deploy:
- https://ordinis.k8s.264.nstart.cloud/swagger-ui.html  — Swagger UI
- https://ordinis.k8s.264.nstart.cloud/v3/api-docs      — OpenAPI spec
Authorize → выбрать oauth2 → Keycloak login (PKCE) → Try it out с JWT.
This commit is contained in:
Zimin A.N.
2026-05-08 00:08:29 +03:00
parent c12f515f43
commit b601c4636f
4 changed files with 63 additions and 7 deletions
+12
View File
@@ -14,10 +14,22 @@ Base URL:
## OpenAPI / Swagger UI
Interactive playground с **Keycloak login** (PKCE flow, без client_secret):
- **Swagger UI:** `https://ordinis.k8s.264.nstart.cloud/swagger-ui.html`
→ нажми **Authorize** → выбери `oauth2` → войдёшь через Keycloak.
После login каждый "Try it out" автоматически добавит JWT.
- **Spec JSON:** `https://ordinis.k8s.264.nstart.cloud/v3/api-docs`
- **Spec YAML:** `https://ordinis.k8s.264.nstart.cloud/v3/api-docs.yaml`
{% note tip %}
Если у тебя уже есть pre-issued service token (например для CI scripts) —
выбери схему `bearerAuth` в Authorize dialog и paste'ни raw JWT. PKCE flow
тогда не нужен.
{% endnote %}
Из spec'а можно generate'ить клиент:
```bash