Skip to content

Draft: Add WebServer section for corenode OIDC configuration #2790

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions src/content/chainlink-nodes/v1/node-config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -905,6 +905,76 @@ UnauthenticatedPeriod = '20s' # Default

UnauthenticatedPeriod defines the period to which unauthenticated requests get limited.

## WebServer.OIDC

```toml
[WebServer.OIDC]
ClientID = "abc123" # Example
ProviderURL = "https://id.example.com/oauth2/default" # Example
RedirectURL = "https://your-node.example.com/signin" # Default
ClaimName = 'groups' # Default
AdminClaim = 'NodeAdmins' # Default
EditClaim = 'NodeEditors' # Default
RunClaim = 'NodeRunners' # Default
ReadClaim = 'NodeReadOnly' # Default
SessionTimeout = '15m0s' # Default
UserApiTokenEnabled = false # Default
UserAPITokenDuration = '240h0m0s' # Default
```

Optional OIDC configuration (when `WebServer.AuthenticationMethod` is set to `oidc`) enables SSO via OpenID Connect. Register a new OIDC application with your identity provider to get a Client ID and Secret for the TOML fields. When OIDC is enabled, the chainlink node will redirect users to the provider and use the returned ID token for authentication and role assignment. The Client Secret should be populated in the your `secrets.toml` as follows:

```toml
[WebServer.OIDC]
clientSecret = "secret" # Example
```

### ClientID

`ClientID` is the identifier issued by your OIDC provider when registering the Chainlink node application. It represents the expected audience of the ID token. **Required**.

### ProviderURL

`ProviderURL` is the base issuer or discovery URL for your OIDC provider (e.g., the `.well-known/openid-configuration` endpoint). **Required**.

### RedirectURL

`RedirectURL` is the callback URL on the Chainlink node (this should be path: `/signin`) to which the IdP redirects after login. This must match the allowed redirect URIs configured in your IdP. **Required**.

### ClaimName

`ClaimName` specifies the JWT claim containing group or role information (default: `groups`). Change if your provider uses a different claim name.

### AdminClaim

`AdminClaim` is the claim value (within `ClaimName`) that maps to the Chainlink **Admin** role (default: `NodeAdmins`).

### EditClaim

`EditClaim` is the claim value that maps to the **Edit** role (default: `NodeEditors`).

### RunClaim

`RunClaim` is the claim value that maps to the **Run** role (default: `NodeRunners`).

### ReadClaim

`ReadClaim` is the claim value that maps to the **Read-Only** role (default: `NodeReadOnly`).

### SessionTimeout

`SessionTimeout` defines how long an OIDC session can remain idle before timing out (default: `15m0s`).

### UserApiTokenEnabled

`UserApiTokenEnabled` enables OIDC users to generate API tokens with the same permissions as their role (default: `false`).

### UserAPITokenDuration

`UserAPITokenDuration` sets the lifespan of API tokens issued by OIDC users (default: `240h0m0s`).

> **Note:** Configure the OIDC client’s secret (`WebServer.OIDC.ClientSecret`) via the node’s secret management (e.g., environment variable `CL_WEB_SERVER_OIDC_CLIENT_SECRET`). Keep the client secret secure and do not expose it in plaintext configuration.

## WebServer.MFA

```toml
Expand Down
Loading