USTB Single Sign-On Authentication Library
Project description
USTB-SSO (Py)
USTB Single Sign-On Authentication Library (Python)
北京科技大学单点登录(SSO)身份认证实现库(Python)
This module is the Python implementation of USTB-SSO.
此模块是 USTB-SSO 项目的 Python 实现。
This project only supports Chinese docs. If you are an English user, feel free to contact us.
介绍 Intro
特点: 简单易用;自文档化;依赖最少原则;良好的类型注解;全面的错误反馈。
实现的功能
- 发起认证:
支持向北科大 SSO 服务器发起针对指定应用的身份认证请求; - 进行认证:
支持使用微信二维码或短信验证码来完成身份认证; - 完成认证:
支持在认证成功后,获取已被认证的客户端实例或 Cookie 实例。
使用方法 Usage
安装
要求 Python >= 3.8,且安装有 httpx 库(一个类似于 requests 的库)。使用 pip 安装:
pip install httpx ustb_sso
前置知识
要想实现通过 SSO 来北科大的某个指定的应用,需要先准备 3 个参数:
- 该应用的实体编号(
entity_id); - 该应用的认证终点 URL(
redirect_uri); - 该应用的内部状态名(
state)。
我们已经在 ustb_sso.prefabs 中以常量的形式存储了部分已知应用的参数。如果您需要接入其他应用,请自行在网页中抓取 https://sso.ustb.edu.cn/idp/authCenter/authenticate 这个请求的请求参数来获得。
示例:微信扫码登录
以下代码演示了如何通过通过微信扫码登录来获取北科大 AI 助手(2025 年版)的令牌 Cookie。
import os
from ustb_sso import HttpxSession, QrAuthProcedure, prefabs
session = HttpxSession()
auth = QrAuthProcedure(session=session, **prefabs.CHAT_USTB_EDU_CN) # ※
print("Starting authentication...")
auth.open_auth()
auth.use_wechat_auth().use_qr_code()
with open(f"qr.png", "wb") as f:
f.write(auth.get_qr_image()) # ▲
print("Waiting for confirmation... Please scan the QR code")
pass_code = auth.wait_for_pass_code()
print("Validating...")
rsp = auth.complete_auth(pass_code)
print("Response status:", rsp.status_code)
cookie_name = "cookie_vjuid_login"
print("Cookie:", cookie_name, "=", session.client.cookies[cookie_name])
当代码运行到 ▲ 位置时,您需要使用微信来扫描文件夹中生成的 qr.png 图片中的二维码,并在微信上确认登录。
代码的 ※ 位置使用了字典解包(**)操作符。它等价于:
auth = HttpxAuthSession(
entity_id=prefabs.CHAT_USTB_EDU_CN["entity_id"],
redirect_uri=prefabs.CHAT_USTB_EDU_CN["redirect_uri"],
state=prefabs.CHAT_USTB_EDU_CN["state"]
)
这里的 prefabs.CHAT_USTB_EDU_CN 就是我们的库所提供的预设应用参数,以便开发者快捷调用。有关其他的预设应用参数,请参见此文件。
session.client 是一个 httpx.Client 实例(类似于 request.Session),用于存储 Cookie 等客户端数据。后续如果需要使用 Cookie 令牌去做其他的 API 请求,可以直接调用 session.client 的相关方法。
示例:短信验证码登录
如果没有微信扫码的条件,则可以使用短信验证码进行登录。以下是使用短信验证码进行登录的示例。
from ustb_sso import HttpxSession, SmsAuthProcedure, prefabs
session = HttpxSession()
auth = SmsAuthProcedure(session=session, **prefabs.CHAT_USTB_EDU_CN)
print("Starting authentication...")
auth.open_auth()
auth.check_sms_available()
phone_number = input("Please enter your phone number: ")
auth.send_sms(phone_number)
sms_code = input("Please enter the SMS code: ")
token = auth.submit_sms_code(phone_number, sms_code)
print("Validating...")
rsp = auth.complete_sms_auth(token)
print("Response status:", rsp.status_code)
cookie_name = "cookie_vjuid_login"
print("Cookie:", cookie_name, "=", session.client.cookies[cookie_name])
开发指南 Dev Guide
如果您想对 USTB-SSO (Py) 进行开发,以下指引可能有所帮助。
开始开发
- 安装 Python;
- 安装依赖管理工具 Poetry 2.1;
- 克隆仓库到本地;
- 使用 Poetry 创建虚拟环境,并安装所有依赖项:
poetry env use python poetry install -E httpx
测试
- 激活虚拟环境:
- 在 VS Code 中选择虚拟环境中的 Python 解释器(推荐);
- 或者,使用
poetry shell命令进入虚拟环境。
- 运行测试代码:
- 在 VS Code 中运行任务
Python: Test USTB-SSO(推荐); - 或者,使用
python <文件名>命令来手动运行代码。
- 在 VS Code 中运行任务
- 构建可发行文件:
poetry build
许可证 Licensing
本项目基于 MIT 开源许可证,详情参见 License 页面。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ustb_sso-1.3.0.tar.gz.
File metadata
- Download URL: ustb_sso-1.3.0.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.9 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
533d72d4ba0a76aad19c35ac8cc7ab0981a8ec7ec478a1ed729caeb64835b68c
|
|
| MD5 |
f8c47778d8b071627feb3c759dfca9f8
|
|
| BLAKE2b-256 |
a697ff97383f7d12b6a1531c24ecf4ed93b1b7fae6373b681103cf1db5e70c42
|
File details
Details for the file ustb_sso-1.3.0-py3-none-any.whl.
File metadata
- Download URL: ustb_sso-1.3.0-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.9 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc5a65746dbea1a87fd59bad04910eb76e67e1e95bd383d928c3604e7e4564c6
|
|
| MD5 |
1a66d4403640f9e423bb78ffb66b338c
|
|
| BLAKE2b-256 |
e61335c76c0e491160ad9380da19d537bbcb81907964fb4db4a3ec85418f195c
|