docs/operations/openid-compatibility-issues-for-vendor.md
Use this checklist when a vendor provides an OAuth or SSO document that is described as OIDC but does not clearly expose the standard OpenID Connect contract required by RustFS.
RustFS expects provider metadata at:
GET {issuer}/.well-known/openid-configuration
Ask the vendor to provide the discovery URL and confirm that it returns at least:
issuerauthorization_endpointtoken_endpointjwks_uriresponse_types_supportedsubject_types_supportedid_token_signing_alg_values_supportedThe returned issuer must exactly match the issuer configured in RustFS.
RustFS must verify the ID token signature. Ask the vendor to provide:
jwks_uriRS256kid maps to the JWKS key setWithout a verifiable ID token signature, the provider is not suitable for RustFS OIDC login.
The provider must accept the standard authorization-code request parameters:
scope=openid profile emailresponse_type=codeclient_idredirect_uristatenoncecode_challengecode_challenge_method=S256If the vendor example omits state, nonce, or PKCE, confirm whether those parameters are supported.
The provider must return the original state value in the callback:
...?code=xxx&state=yyy
RustFS uses state for CSRF protection and to find the in-flight OIDC session. A callback that only returns code is not enough.
The token endpoint response must be JSON and include at least:
access_tokentoken_type, usually Bearerexpires_inid_tokenRustFS requires id_token; an OAuth-only access token is not sufficient for Console OIDC login.
The ID token must contain standard claims that RustFS can verify:
isssubaudexpiatnonce when the authorization request includes nonceAsk the vendor for a sample ID token payload and claim documentation.
Standard OIDC UserInfo normally uses:
GET /userinfo
Authorization: Bearer <access_token>
If the vendor only documents a private profile endpoint such as /oidc/profile?access_token=..., ask whether a standard userinfo_endpoint is available and returned in discovery.
Standard RP-initiated logout is normally exposed through an end_session_endpoint in discovery. If the vendor only documents a private token removal endpoint, ask whether standard OIDC logout is available.
RustFS can still fall back to the Console login page when the provider does not advertise an end-session endpoint.
OIDC primarily authenticates the user. RustFS authorization is still based on RustFS policies. The provider must emit claims that can be mapped to RustFS policies, for example:
groupsrolespolicyAsk the vendor to confirm:
consoleAdmin, readwrite, or readonlyIf the provider only returns a user id or token validity result, it can authenticate the user but cannot by itself express RustFS authorization.
RustFS browser-facing redirect behavior depends on these values:
redirect_uri, when explicitly configured, is the callback URL sent to the providerRUSTFS_BROWSER_REDIRECT_URL is the public RustFS browser origin used for callback generation when no provider redirect_uri exists, and for Console success and logout fallback redirectsAsk the vendor to register the exact callback URL, for example:
https://rustfs.example.com/rustfs/admin/v3/oidc/callback/default
For load-balanced RustFS deployments, ensure authorize and callback requests reach the same RustFS node while the OIDC state is in flight.