From 3d3493e546a42982e9db1ef4bbf390a3181307c2 Mon Sep 17 00:00:00 2001 From: Andy Dixon Date: Thu, 26 Feb 2026 12:33:51 +0000 Subject: [PATCH] docs: require POST+CSRF for admin enrollment export calls Document provider hardening change: enrollment URL export is state-changing and must be invoked with POST plus CSRF token, not GET links. --- README.md | 1 + docs/INTEGRATION_GUIDE.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 6af0772..5e7b133 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ This wrapper now delegates to `BlackWall\Auth\AuthClient`. - Expect `access_denied` even after the consent page is displayed if provider-side project membership or tenant scope changes before consent submission. - Register only HTTPS redirect URIs in provider client settings (HTTP should be used only for localhost loopback during development). - Use OAuth/portal authentication endpoints for end users; provider admin login endpoints enforce separate admin scope checks. +- For provider admin enrollment URL export operations, use `POST` with CSRF protection; do not automate them via unauthenticated `GET` links. - Never place client secrets, refresh tokens, or access tokens in URL query strings. - For OIDC providers, include a per-request `nonce` in authorisation requests. - For direct Cryptbin API usage, send `key_b64url` on unwrap calls; provider rejects key-mismatch unwrap attempts with `403 Forbidden`. diff --git a/docs/INTEGRATION_GUIDE.md b/docs/INTEGRATION_GUIDE.md index ff6acba..2676f6d 100644 --- a/docs/INTEGRATION_GUIDE.md +++ b/docs/INTEGRATION_GUIDE.md @@ -151,6 +151,7 @@ Provider user/project assignment views may exclude disabled projects even if his - For token exchange and refresh, apply bounded retry/backoff on transient provider failures instead of immediate repeated retries. - Use exactly one client authentication method per token/control request (do not send both HTTP Basic and `client_secret` form fields together). - If you call provider WebAuthn login challenge/verify endpoints directly, use `POST` only. +- Treat admin enrollment URL export as a state-changing operation: call it with `POST` and include a valid CSRF token. - Configure OAuth client redirect URIs as HTTPS in production; reserve HTTP for localhost loopback testing only. - Assume provider rate limits are enforced per source identity (for example IP) and shared across related auth endpoints. - Treat report/export-style provider endpoints as high-cost and expect stricter rate limits.