Skip to main content

rustauth_plugins/generic_oauth/providers/
keycloak.rs

1//! Keycloak generic OAuth provider helper.
2
3use crate::generic_oauth::GenericOAuthConfig;
4
5pub const PROVIDER_ID: &str = "keycloak";
6
7#[derive(Debug, Clone, PartialEq, Eq)]
8pub struct KeycloakOptions {
9    pub base: super::BaseOAuthProviderOptions,
10    pub issuer: String,
11}
12
13pub fn keycloak(options: KeycloakOptions) -> GenericOAuthConfig {
14    let issuer = options.issuer.trim_end_matches('/');
15    let mut config = GenericOAuthConfig::discovery(
16        PROVIDER_ID,
17        "",
18        None::<String>,
19        format!("{issuer}/.well-known/openid-configuration"),
20    );
21    super::apply_base_options(
22        &mut config,
23        options.base,
24        vec![
25            "openid".to_owned(),
26            "profile".to_owned(),
27            "email".to_owned(),
28        ],
29    );
30    config
31}