跳转到主要内容

为Casdoor构建的Python SDK

项目描述

casdoor-python-sdk

GitHub Action Version PyPI - Wheel Pyversions Discord

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

Casdoor-python-sdk可在PyPI上获取

$ pip install casdoor

Casdoor SDK易于使用。以下我们将展示步骤。

步骤1. 初始化配置

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

名称(顺序) 必须 描述
endpoint Casdoor服务器URL,例如 http://localhost: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

  1. APP 将向 Casdoor 发送请求。
    由于 Casdoor 是基于UI的OAuth提供者,您不能使用Postman这样的请求管理服务发送带参数的URL并返回JSON文件。

  2. 尝试它的最简单方法是,在浏览器中输入URL(在其中可以执行JavaScript来运行UI)。

  3. 在浏览器中按此格式输入URL: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx
    在这个URL中,endpoint是您的Casdoor位置,如步骤1中所述;然后需要您自行填写xxx

提示

  1. redirect_uri是您的APP配置为监听来自Casdoor响应的URL。例如,如果您的redirect_urihttps://forum.casbin.com/callback,则Casdoor将向该URL发送请求,并附带两个参数codestate,这些参数将在后续步骤中用于认证。

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

  3. 当然,您希望您的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数据。

项目详情


下载文件

下载您平台的文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。

源分发

casdoor-1.25.0.tar.gz (30.4 kB 查看哈希值)

上传时间

构建分发

casdoor-1.25.0-py2.py3-none-any.whl (49.6 kB 查看哈希值)

上传时间 Python 2 Python 3