rustical_oidc/
config.rs

1use openidconnect::{ClientId, ClientSecret, IssuerUrl, Scope};
2use serde::{Deserialize, Serialize};
3
4#[derive(Deserialize, Serialize, Clone, Default)]
5#[serde(rename_all = "snake_case")]
6pub enum UserIdClaim {
7    // The correct option
8    Sub,
9    // The more ergonomic option if you know what you're doing
10    #[default]
11    PreferredUsername,
12}
13
14#[derive(Deserialize, Serialize, Clone)]
15#[serde(deny_unknown_fields)]
16pub struct OidcConfig {
17    pub name: String,
18    pub issuer: IssuerUrl,
19    pub client_id: ClientId,
20    pub client_secret: Option<ClientSecret>,
21    pub scopes: Vec<Scope>,
22    #[serde(default)]
23    pub allow_sign_up: bool,
24    pub require_group: Option<String>,
25    #[serde(default)]
26    pub claim_userid: UserIdClaim,
27}