41个稳定版本 (17个主要版本)

新版本 25.0.400 2024年8月23日
25.0.0 2024年6月19日
24.0.301 2024年4月25日
24.0.200 2024年3月30日
0.2.2 2020年3月12日

#25 in 异步

Download history 1323/week @ 2024-05-03 1250/week @ 2024-05-10 1693/week @ 2024-05-17 1568/week @ 2024-05-24 1248/week @ 2024-05-31 2149/week @ 2024-06-07 1869/week @ 2024-06-14 1603/week @ 2024-06-21 1629/week @ 2024-06-28 1698/week @ 2024-07-05 2213/week @ 2024-07-12 1966/week @ 2024-07-19 1895/week @ 2024-07-26 2548/week @ 2024-08-02 2589/week @ 2024-08-09 2248/week @ 2024-08-16

9,707 每月下载量
用于 5 个crate (2个直接使用)

Unlicense OR MIT

565KB
10K SLoC

Keycloak管理REST API

双授权于 MITUNLICENSE.

功能

实现了Keycloak管理REST API版本25.0.4.

功能标志

默认标志:tags-all.

  • rc:使用 Arc 进行反序列化。
  • schemars:添加 schemars 支持。
  • tags-all:激活REST API中的所有标签(资源组),这是默认行为。禁用默认功能并使用单个 tag-xxx 功能来激活所需资源组。完整列表请参阅 Cargo.toml.

用法

需要Rust版本 >= 1.74.0.

在Cargo.toml中添加依赖项

[dependencies]
keycloak = "25.0"
use keycloak::{
    types::*,
    {KeycloakAdmin, KeycloakAdminToken},
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let url = std::env::var("KEYCLOAK_ADDR").unwrap_or_else(|_| "https://127.0.0.1:8080".into());
    let user = std::env::var("KEYCLOAK_USER").unwrap_or_else(|_| "admin".into());
    let password = std::env::var("KEYCLOAK_PASSWORD").unwrap_or_else(|_| "password".into());

    let client = reqwest::Client::new();
    let admin_token = KeycloakAdminToken::acquire(&url, &user, &password, &client).await?;

    eprintln!("{:?}", admin_token);

    let admin = KeycloakAdmin::new(&url, admin_token, client);

    admin
        .post(RealmRepresentation {
            realm: Some("test".into()),
            ..Default::default()
        })
        .await?;

    admin
        .realm_users_post(
            "test",
            UserRepresentation {
                username: Some("user".into()),
                ..Default::default()
            },
        )
        .await?;

    let users = admin
        .realm_users_get(
            "test", None, None, None, None, None, None, None, None, None, None, None, None, None,
            None,
        )
        .await?;

    eprintln!("{:?}", users);

    let id = users
        .iter()
        .find(|u| u.username == Some("user".into()))
        .unwrap()
        .id
        .as_ref()
        .unwrap()
        .to_string();

    admin
        .realm_users_with_user_id_delete("test", id.as_str())
        .await?;

    admin.realm_delete("test").await?;

    Ok(())
}

版本协议

如果我们有 x.y.z 版本的 keycloak,我们的包版本将是 x.y.(z * 100 + v),其中v是对官方 x.y.z 版本的次要修复版本。

示例:官方版本 13.0.1 对应的 crate 版本是 13.0.100。其中 13.0.102 表示 keycloak 版本 13.0.1 和次要修复版本 2

更新

要更新当前版本,请使用提供的 update.ts deno 脚本

deno run --allow-env=KEYCLOAK_RUST_VERSION,KEYCLOAK_VERSION,KEYCLOAK_RUST_MAJOR_VERSION --allow-read=Cargo.toml --allow-write=Cargo.toml,api/openapi.json,src/types.rs,src/rest/generated_rest.rs --allow-net=keycloak.org,www.keycloak.org --allow-run=cargo,gh,git,handlebars-magic update.ts

依赖项

~4–15MB
~222K SLoC