You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -119,7 +119,7 @@ The agent loads tools from a Red Hat Lightspeed MCP server running as a sidecar:
119
119
### DCR (Dynamic Client Registration)
120
120
121
121
Two modes controlled by `DCR_ENABLED`:
122
-
-**Real DCR** (`true`): Creates OAuth clients in Red Hat SSO (Keycloak) via `dcr/keycloak_client.py`
122
+
-**Real DCR** (`true`): Creates OAuth tenant clients in Red Hat SSO via the GMA API (`dcr/gma_client.py`). Authenticates with `GMA_CLIENT_ID`/`GMA_CLIENT_SECRET` using `scope=api.iam.clients.gma`.
123
123
-**Static credentials** (`false`): Accepts pre-seeded client_id/secret in DCR request body
124
124
125
125
Client secrets are Fernet-encrypted at rest (`DCR_ENCRYPTION_KEY`).
@@ -168,6 +168,7 @@ All configuration is via environment variables, managed through Pydantic setting
Copy file name to clipboardExpand all lines: README.md
+5-141Lines changed: 5 additions & 141 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ This agent provides AI-powered access to Red Hat Insights services, enabling nat
18
18
- Built with Google ADK and Gemini 2.5 Flash
19
19
- A2A protocol support with SSE streaming for multi-agent ecosystems
20
20
- OAuth 2.0 authentication via Red Hat SSO
21
-
- Dynamic Client Registration (DCR) with Red Hat SSO (Keycloak)
21
+
- Dynamic Client Registration (DCR) with Red Hat SSO via GMA SSO API
22
22
- Google Cloud Marketplace integration (Gemini Enterprise)
23
23
- PostgreSQL persistence for production deployments
24
24
- Usage tracking and reporting to Google Cloud Service Control
@@ -252,7 +252,7 @@ lightspeed_agent/
252
252
├── core/ # Agent definition (ADK)
253
253
├── db/ # Database models (SQLAlchemy)
254
254
├── dcr/ # Dynamic Client Registration
255
-
│ ├── keycloak_client.py # Red Hat SSO DCR client
255
+
│ ├── gma_client.py # GMA SSO API client
256
256
│ └── service.py # DCR business logic
257
257
├── marketplace/ # Google Marketplace integration & handler service
258
258
│ ├── app.py # Handler FastAPI app (port 8001)
@@ -537,7 +537,7 @@ For development without real tokens, set `SKIP_JWT_VALIDATION: "true"` in the co
537
537
538
538
### Testing DCR Locally
539
539
540
-
The Dynamic Client Registration (DCR) flow can be tested locally without admin access to the production Red Hat SSO. There are two modes: **static credentials** (no Keycloak needed) and **real DCR** against a local Keycloak instance.
540
+
The Dynamic Client Registration (DCR) flow can be tested locally without admin access to the production Red Hat SSO. The **static credentials** mode allows testing without a real SSO connection.
541
541
542
542
Both modes require `SKIP_JWT_VALIDATION=true` on the marketplace handler so it accepts JWTs signed by your own GCP service account instead of Google's production `cloud-agentspace` account.
543
543
@@ -585,9 +585,9 @@ Both modes require `SKIP_JWT_VALIDATION=true` on the marketplace handler so it a
This mode skips Keycloak client creation. Instead, the caller provides pre-registered `client_id` and `client_secret` in the DCR request body alongside the `software_statement`. The handler validates them (skipped with `SKIP_JWT_VALIDATION=true`), stores them linked to the order, and returns them.
590
+
This mode skips OAuth client creation via the GMA SSO API. Instead, the caller provides pre-registered `client_id` and `client_secret` in the DCR request body alongside the `software_statement`. The handler validates them (skipped with `SKIP_JWT_VALIDATION=true`), stores them linked to the order, and returns them.
591
591
592
592
1. **Copy the secrets template and edit it:**
593
593
```bash
@@ -638,142 +638,6 @@ This mode skips Keycloak client creation. Instead, the caller provides pre-regis
638
638
podman kube down deploy/podman/marketplace-handler-pod.yaml
639
639
```
640
640
641
-
#### Option B: Real DCR with Local Keycloak
642
-
643
-
This mode exercises the full DCR flow -- real OAuth client creation in a locally-controlled Keycloak instance.
0 commit comments