为Casdoor构建的Python SDK
项目描述
casdoor-python-sdk
Casdoor的Python SDK允许您轻松地将应用程序连接到Casdoor身份验证系统,而无需从头开始实现。
Casdoor-python-sdk可在PyPI上获取
$ pip install casdoor
Casdoor SDK易于使用。以下我们将展示步骤。
步骤1. 初始化配置
初始化需要5个参数,都是字符串类型
| 名称(顺序) | 必须 | 描述 | 
|---|---|---|
| endpoint | 是 | Casdoor服务器URL,例如 https://:8000 | 
| client_id | 是 | Application.client_id | 
| client_secret | 是 | Application.client_secret | 
| certificate | 是 | 与Casdoor证书相同 | 
| org_name | 是 | 组织名称 | 
| application_name | 是 | 应用程序名称 | 
from casdoor import CasdoorSDK
certificate = b'''-----BEGIN CERTIFICATE-----
MIIE+TCCAuGgAwIBAgIDAeJAMA0GCSqGSIb3DQEBCwUAMDYxHTAbBgNVBAoTFENh
...
-----END CERTIFICATE-----'''
sdk = CasdoorSDK(
    endpoint,
    client_id,
    client_secret,
    certificate,
    org_name,
    application_name,
)
或者使用异步版本
from casdoor import AsyncCasdoorSDK
certificate = b'''-----BEGIN CERTIFICATE-----
MIIE+TCCAuGgAwIBAgIDAeJAMA0GCSqGSIb3DQEBCwUAMDYxHTAbBgNVBAoTFENh
...
-----END CERTIFICATE-----'''
sdk = AsyncCasdoorSDK(
    endpoint,
    client_id,
    client_secret,
    certificate,
    org_name,
    application_name,
)
步骤2. 通过Casdoor服务器进行授权
此时,我们应该使用一些方法来验证Casdoor服务器。
首先,我们希望您清楚地了解Casdoor的验证过程。以下段落将提到想要使用Casdoor作为验证手段的您的应用程序,以及Casdoor作为 Casdoor。
- 
APP将向Casdoor发送请求。
 由于Casdoor是基于UI的OAuth提供者,您不能使用Postman这样的请求管理服务发送带参数的URL并返回JSON文件。
- 
尝试它的最简单方法是,在浏览器中输入URL(在其中可以执行JavaScript来运行UI)。 
- 
在浏览器中按此格式输入URL: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx
 在这个URL中,endpoint是您的Casdoor位置,如步骤1中所述;然后需要您自行填写xxx。
提示
- 
redirect_uri是您的APP配置为监听来自Casdoor响应的URL。例如,如果您的redirect_uri是https://forum.casbin.com/callback,则Casdoor将向该URL发送请求,并附带两个参数code和state,这些参数将在后续步骤中用于认证。
- 
state通常是您应用程序的名称,您可以在Casdoor的Applications选项卡下找到它,最左侧的Name列给出了每个应用程序的名称。
- 
当然,您希望您的 APP能够发送URL。例如,您应该有一个按钮,并携带这个URL。所以当您点击按钮时,您应该被重定向到Casdoor进行验证。现在您只是在浏览器中输入它进行测试。
步骤3. 获取令牌并解析
Casdoor验证通过后,它将带有步骤2中提到的代码和状态重定向到您的应用程序,例如:https://forum.casbin.com/callback?code=xxx&state=yyyy。
您的Web应用程序可以获取code并调用get_oauth_token(code=code),然后解析jwt令牌。
一般流程如下
token = sdk.get_oauth_token(code=code)
access_token = token.get("access_token")
decoded_msg = sdk.parse_jwt_token(access_token) # or sdk.parse_jwt_token(access_token, kwargs)
decoded_msg是从access_token解码的JSON数据,其中包含用户信息和其他有用信息。
步骤4. 与用户交互
casdoor-python-sdk支持基本用户操作,如
- get_user(user_id: str),通过用户名获取一个用户。
- get_users(),获取所有用户。
- modify_user(method: str, user: User)/add_user(user: User)/update_user(user: User)/delete_user(user: User),将用户写入数据库。
- refresh_token_request(refresh_token: str, scope: str),刷新访问令牌
- enforce(self, permission_model_name: str, sub: str, obj: str, act: str, v3: Optional[str], v4: Optional[str], v5: Optional[str]),从模型检查权限
- batch_enforce(self, permission_model_name: str, permission_rules: list[list[str]]),批量从模型检查权限
- get_user_count(is_online: bool = None),获取用户数量。
资源所有者密码凭证授权
如果您的应用程序没有将用户重定向到Casdoor的前端,并且您已启用密码凭证授权,则可以像这样获取访问令牌
token = sdk.get_oauth_token(username=username, password=password)
access_token = token.get("access_token")
decoded_msg = sdk.parse_jwt_token(access_token) # or sdk.parse_jwt_token(access_token, kwargs)
decoded_msg是从access_token解码的JSON数据,其中包含用户信息和其他有用信息。
客户端凭证授权
当您的应用程序没有前端时,您也可以使用客户端凭证授权。需要注意的是,以这种方式获得的AccessToken与其他不同,它对应于应用程序而不是用户。
token = sdk.get_oauth_token()
access_token = token.get("access_token")
decoded_msg = sdk.parse_jwt_token(access_token) # or sdk.parse_jwt_token(access_token, kwargs)
decoded_msg是从access_token解码的JSON数据。
项目详情
下载文件
下载您平台的文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。