4.3 KiB
OIDC Vendor Compatibility Checklist
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.
1. Discovery Metadata
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_supported
The returned issuer must exactly match the issuer configured in RustFS.
2. JWKS and Token Signature Verification
RustFS must verify the ID token signature. Ask the vendor to provide:
jwks_uri- supported signing algorithms, such as
RS256 - key rotation behavior
- how the token
kidmaps to the JWKS key set
Without a verifiable ID token signature, the provider is not suitable for RustFS OIDC login.
3. Authorization Request Parameters
The provider must accept the standard authorization-code request parameters:
scope=openid profile emailresponse_type=codeclient_idredirect_uristatenoncecode_challengecode_challenge_method=S256
If the vendor example omits state, nonce, or PKCE, confirm whether those parameters are supported.
4. Callback State
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.
5. Token Response
The token endpoint response must be JSON and include at least:
access_tokentoken_type, usuallyBearerexpires_inid_token
RustFS requires id_token; an OAuth-only access token is not sufficient for Console OIDC login.
6. ID Token Claims
The ID token must contain standard claims that RustFS can verify:
isssubaudexpiatnoncewhen the authorization request includesnonce
Ask the vendor for a sample ID token payload and claim documentation.
7. UserInfo Endpoint
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.
8. Logout Endpoint
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.
9. Authorization Claims
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:
groupsrolespolicy- another agreed flat array or string claim
Ask the vendor to confirm:
- whether group, role, or policy claims can be included in the ID token
- whether those claims can be included in UserInfo
- the exact claim names and value formats
- whether the claim values can match RustFS policy names such as
consoleAdmin,readwrite, orreadonly
If the provider only returns a user id or token validity result, it can authenticate the user but cannot by itself express RustFS authorization.
10. RustFS Redirect Requirements
RustFS browser-facing redirect behavior depends on these values:
- provider
redirect_uri, when explicitly configured, is the callback URL sent to the provider RUSTFS_BROWSER_REDIRECT_URLis the public RustFS browser origin used for callback generation when no providerredirect_uriexists, and for Console success and logout fallback redirects- dynamic request-header redirects are used only when no configured redirect source exists and dynamic redirects are enabled
Ask 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.