RS-KEYCLOAK

Fornece uma camada de autenticação para keycloak usando rust.

Instalação

Adicione ao projeto usando cargo add rs-keycloak

Fazendo login com o client

```rust use client::OpenID;

fn main() { let serverurl = "https://seuhost.com.br"; let clientid = "client"; let realmname = "realm"; let clientsecret = "client_secret";

let open_id = OpenID::login_with_client(
    server_url,
    realm_name,
    client_id,
    client_secret,
).unwrap();

println!("{}", open_id.get_access_token()); // veja outros métodos disponíveis na struct OpenID

} ```

Fazendo login com usuário e senha

```rust use client::OpenID;

fn main() { let serverurl = "https://seuhost.com.br"; let clientid = "client"; let realmname = "realm"; let clientsecret = "client_secret"; let username = "meuusuario"; let password = "minhasenhasecreta";

let open_id = OpenID::login_with_password(
    server_url,
    realm_name,
    client_id,
    client_secret,
    username,
    password,
).unwrap();

println!("{}", open_id.get_access_token()); // veja outros métodos disponíveis na struct OpenID

} ```

Fazendo o introspect do token e validando roles

```rust use client::OpenID;

fn main() { let serverurl = "https://seuhost.com.br"; let clientid = "client"; let realmname = "realm"; let clientsecret = "clientsecret"; let accesstoken = "eyJhbGciO.....H38Xw";

let open_id = OpenID::introspect(
    server_url,
    realm_name,
    client_id,
    client_secret,
    access_token,
).unwrap();

// Obtendo todas as roles
let roles = open_id.get_roles();

// printando todas as roles
println!("{:?}", roles);

// validando se o token possui
// Será verdadeiro se existir ALGUMA das roles informadas
let uma_ou_outra = open_id.has_any_roles(&["cobrancas.boleto", "user"]);

println!("Alguma persmissão existe? {:?}", uma_ou_outra);

// validando se o token possui
// Será verdadeiro se existir ALGUMA das roles informadas
let todas =    open_id.has_all_roles(&["cobrancas.boleto", "uma_authorization"]);

println!("Todas as permissões existem? {:?}", todas);

} ```