keycloak_oauth/client/
config.rs1use 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}