Rust wrapper for msal-browser.js.
Methods names all match the js
but with snake case, but unlike the js
instead of a single PublicClientApplication
type there are two app types:
PopupApp
RedirectApp
The PopupApp
is a the default feature: if you want to use the RedirectApp
it is behind the redirect
feature:
rust
msal_browser = { version = "0.2.0", features = ["redirect"] }
There are a huge amount of Configuration
options so the rust side uses a builder pattern. You can also use a js Object
and call Configuration::unchecked_from
.
To use:
```rust const CLIENTID: &str = "CLIENTID"; const AUTHORITY: &str = "AUTHORITY";
// Setup App let authoptions = BrowserAuthOptions::new(CLIENTID).setauthority(AUTHORITY); let config = Configuration::new(authoptions); let client_app = PopupApp::new(config);
// Define some scopes let scopes = ["User.Read"];
// Login let authres = clientapp.loginpopup().await.unwrap(); let authres = clientapp.loginpopupwithscopes(&scopes).await.unwrap();
// Account Info let account = clientapp.getaccountbyusername("username").unwrap(); let account = clientapp.getaccountbyhomeid("homeid").unwrap(); let accounts = &clientapp.getall_accounts();
// Requests let authrequest = AuthorizationUrlRequest::new(&scopes[..]).setloginhint(account.username()); let silentrequest = SilentRequest::new(&scopes[..], &account); let endsessionrequest = EndSessionRequest::new();
// SSO sign in let ssoauthresult = clientapp.ssosilent(&auth_request).await.unwrap();
// Popup token let token = clientapp.acquiretokenpopup(&authrequest).await.unwrap();
// Silent token let silenttoken = clientapp .acquiretokensilent(&silent_request) .await .unwrap();
// Logout client_app.logout(None); ```
There is an example app that uses the fantastic dominator dom library.
Approx file sizes in kb:
| File | Debug | Release | Release + minified | --- | --- | --- | --- | | wasm | 63 | 14 | 14 | js | 363 | 363 | 113
The js file bundles the msal-browser.js
library.