#oidc #sso #iam #casdoor #jwt

casdoor-rust-sdk-release-test

Casdoor的Rust客户端SDK

4个稳定版本

1.5.0 2022年7月4日
1.4.0 2022年7月4日
1.3.0 2022年7月4日
1.0.0 2022年7月4日

身份验证中排名第645

Apache-2.0

24KB
354

casdoor-rust-sdk

这是Casdoor的Rust SDK,它将允许您轻松地将应用程序连接到Casdoor身份验证系统,而无需从头实现。

Casdoor SDK使用非常简单。以下我们将展示步骤。

[dependencies]
casdoor-rust-sdk = "0.1"

//in your app
[macro_use]
extern crate casdoor_rust_sdk_release_test;

步骤1. 初始化SDK

初始化需要6个参数,都是字符串类型

名称(顺序) 必须 描述
端点 Casdoor服务器Url,例如 https://127.0.0.1:8000
client_id Application.client_id
client_secret Application.client_secret
证书 与您的Application证书相同
org_name Application.organization
front_endpoint Casdoor网络端点,默认为endpoint.replace(":8000", ":7001")
//anything implemented "ToString" trait can be used by this macro
let app = newsdk!(endpoint, client_id, client_secret, certificate, org_name);

步骤2. 获取令牌并解析

通过Casdoor验证后,它将带有代码和状态重定向到您的应用程序,如下所示:http://forum.casbin.org?code=xxx&state=yyyy

您的Web应用程序可以获取codestate并调用GetOAuthToken(code, state),然后解析出jwt令牌。提示

  1. redirect_uri是您的应用程序配置为监听来自Casdoor响应的URL。例如,如果您的redirect_urihttps://forum.casbin.com/callback,那么Casdoor将向此URL发送请求,并带有两个参数codestate,这些参数将在后续步骤中进行身份验证。

  2. state通常是应用程序的名称,您可以在Casdoor中的Applications选项卡下找到它,最左边的Name列给出了每个应用程序的名称。

  3. 当然,您希望应用程序能够发送URL。例如,您应该有一个按钮,它携带这个URL。因此,当您点击该按钮时,您应该被重定向到Casdoor进行验证。目前,您只是在浏览器中输入它以进行测试。

  4. 所有函数都将返回 Result<_, Box<dyn std::error::Error>>,因为有多种可能的错误。

一般过程如下

//config will generate a NetWorkConfig struct, default response type is "code", and default scope is "read"
let config = &networkconfig!(callback, state)
let link = app.get_auth_link(&config)?;
//and the code will be sent to callback address
let code = (your method to get code);
let access_token = app.get_oauth_token(&code)?;
//the claims returns a HashMap<String, String>
let claims = parse_jwt_token(access_token)?;


步骤3. 与用户交互

SDK 支持基本用户操作,如

  • get_user_by_name(name),根据用户名获取一个用户。
  • get_users(),获取所有用户。
  • add_user(User),将用户写入数据库。
  • update_user(User),更新用户信息
  • delete_user(User),删除用户

依赖项

~16–30MB
~569K SLoC