Skip to main content

keycloak_oauth/client/
config.rs

1use super::KeycloakClient;
2
3pub struct ClientConfiguration {
4    pub client_id: String,
5    pub client_secret: String,
6    pub auth_url: String,
7    pub token_url: String,
8    pub device_authorization_url: String,
9    pub token_cache_path: String,
10    pub jwks_url: String,
11    pub realm: String,
12    pub scopes: Vec<String>,
13}
14
15impl ClientConfiguration {
16    pub fn build(self) -> KeycloakClient {
17        KeycloakClient::new(self)
18    }
19
20    pub fn from_env() -> Self {
21        dotenv::dotenv().ok();
22        Self {
23            client_id: std::env::var("KK_CLIENT_ID").expect("Missing KK_CLIENT_ID"),
24            client_secret: std::env::var("KK_CLIENT_SECRET").expect("Missing KK_CLIENT_SECRET"),
25            auth_url: std::env::var("KK_AUTH_URL").expect("Missing KK_AUTH_URL"),
26            token_url: std::env::var("KK_TOKEN_URL").expect("Missing KK_TOKEN_URL"),
27            device_authorization_url: std::env::var("KK_DEVICE_AUTHORIZATION_URL")
28                .expect("Missing KK_DEVICE_AUTHORIZATION_URL"),
29            jwks_url: std::env::var("KK_JWKS_URL").expect("Missing KK_JWKS_URL"),
30            token_cache_path: std::env::var("KK_TOKEN_CACHE_PATH")
31                .expect("Missing KK_TOKEN_CACHE_PATH"),
32            realm: std::env::var("KK_REALM").expect("Missing realm"),
33            scopes: vec![
34                "openid".to_string(),
35                "email".to_string(),
36                "offline_access".to_string(),
37                "profile".to_string(),
38                "roles".to_string(),
39            ],
40        }
41    }
42}