rust-passport-azure-ad

Port of passport-azure-ad to Rust

Installation

bash cargo add passport_azure_ad

Usage

```rust // msaltest.rs use dotenvy::dotenv; use passportazuread::{ bearerstrategy::BearerStrategy, error::PassportError, types::{LogLevel, Payload}, util, }; use std::env;

[tokio::test]

async fn testmsalbearer() { dotenv().ok(); let token = env::var("BEARERTOKEN") .expect("'BEARERTOKEN' is not defined") .tostring(); let clientid = env::var("AZUREADCLIENTID") .expect("'AZUREADCLIENTID' is not defined") .tostring(); let tenantid = env::var("AZUREADTENANTID") .expect("'AZUREADTENANTID' is not defined") .to_string();

let bearer = BearerStrategy::build(
    Some(false),                                       // allow_multi_audiences
    None,                                              // audience
    Some(client_id),                                   // client_id
    None,                                              // clock_stew
    Some(util::open_id_config_url(tenant_id.clone())), // identity_metadata
    Some(false),                                       // ignore_expiration
    Some(false),                                       // is_b2c
    Some(vec![util::issuer_url(tenant_id)]),           // issuer
    Some(LogLevel::Trace),                             // log_level
    None,                                              // policy_name
    Some(vec![String::from("api-access")]),            // scope
    Some(true),                                        // validate_issuer
)
.unwrap();

let validated: Result<Payload, PassportError> = bearer.authenticate(token).await;

assert!(validated.is_ok());

} ```

Test

```bash

Source config file with exports:

source && cargo test

Source .env file

set -o allexport && source .env && set +o allexport && cargo test ```

License

MIT