16个版本
0.2.7 | 2023年2月9日 |
---|---|
0.2.6 | 2022年11月22日 |
0.2.4 | 2021年3月10日 |
0.2.3 | 2021年1月14日 |
0.1.8 | 2020年8月11日 |
134 在 WebAssembly
52 每月下载
1MB
15K SLoC
Rust + WASM + msal-browser
Rust对msal-browser.js的包装。
方法名全部匹配 js
,但使用蛇形命名法,但没有像 js
那样只有一个 PublicClientApplication
类型,而是有两个应用类型
PopupApp
RedirectApp
PopupApp
是默认功能:如果您想使用 RedirectApp
,则它位于 redirect
功能之后
msal_browser = { version = "0.2.0", features = ["redirect"] }
有大量的 配置
选项,因此Rust端使用构建器模式。您还可以使用js Object
并调用 Configuration::unchecked_from
。
使用
const CLIENT_ID: &str = "CLIENT_ID";
const AUTHORITY: &str = "AUTHORITY";
// Setup App
let auth_options = BrowserAuthOptions::new(CLIENT_ID).set_authority(AUTHORITY);
let config = Configuration::new(auth_options);
let client_app = PopupApp::new(config);
// Define some scopes
let scopes = ["User.Read"];
// Login
let auth_res = client_app.login_popup().await.unwrap();
let auth_res = client_app.login_popup_with_scopes(&scopes).await.unwrap();
// Account Info
let account = client_app.get_account_by_username("username").unwrap();
let account = client_app.get_account_by_home_id("home_id").unwrap();
let accounts = &client_app.get_all_accounts();
// Requests
let auth_request = AuthorizationUrlRequest::new(&scopes[..]).set_login_hint(account.username());
let silent_request = SilentRequest::new(&scopes[..], &account);
let end_session_request = EndSessionRequest::new();
// SSO sign in
let sso_auth_result = client_app.sso_silent(&auth_request).await.unwrap();
// Popup token
let token = client_app.acquire_token_popup(&auth_request).await.unwrap();
// Silent token
let silent_token = client_app
.acquire_token_silent(&silent_request)
.await
.unwrap();
// Logout
client_app.logout(None);
示例
有一个示例应用程序,它使用出色的 dominator DOM库。
测试
目前可以使用 ./run_tests.sh
或 wasm-pack test --safari --headless -- --features "popup redirect
运行测试
注意
需要安装node以构建。目前使用 --no-verify
发布到crates.io:这是因为 build.rs
需要安装所有节点模块才能成功运行,并且正在修改 OUT_DIR
外部的文件以构建 js
。从版本2.12开始,他们切换到使用 preserveModules = true
3563,这意味着旧的 index.es.js
文件不存在,而是留下模块导入。因此现在我在Rust中使用 Rollup
生成所需的文件以与bindgen链接。
依赖项
~1–3.5MB
~65K SLoC