rustauth_plugins/generic_oauth/providers/
keycloak.rs1use 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}