Python的SSPI API绑定
此版本被撤回的原因
sspi将被重命名,因为它与pywin32命名空间冲突
项目描述
Python SSPI库
此库提供Python函数,用于封装Windows SSPI API。它旨在提供高、低级接口,以便其他库可以轻松利用以使用SSPI集成。高级接口位于sspi
命名空间下,而低级接口位于sspi.raw
接口下。
需求
- Python 3.8+
需要更多需求来从头开始编译代码,但此库作为wheel提供,因此安装不是强制性的。
安装
只需运行
pip install sspi
要从源安装,请运行以下命令
git clone https://github.com/jborean93/pysspi.git
python -m pip install build
python -m build
pip install dist/sspi-*.whl
开发
要运行测试或对此存储库进行更改,请运行以下命令:
git clone https://github.com/jborean93/pysspi.git
pip install -r requirements-dev.txt
pre-commit install
python -m pip install -e .
# Can compile the sspi extensions on an adhoc basis
# python setup.py build_ext --inplace
从那里,可以使用类似 VSCode 的编辑器进行更改和运行测试套件。更改后重新编译 Cython 文件,请运行 build_ext --inplace
命令。
如果在 Linux 或 macOS 上构建,必须使用 Rust 编译 libsspi
的一个版本,该版本来自 sspi-rs。在编译时必须存在与头文件一起的 libicuuc
的副本。要编译 sspi-rs
,下载 Git 存储库并运行以下命令。
cargo build \
--package sspi-ffi \
--release
export LD_LIBRARY_PATH="${PWD}/target/release"
export LIBRARY_PATH="${PWD}/target/release"
结构
此库仅是 SSPI API 的包装器。位于 sspi
命名空间下的函数以更 Pythonic 的 snake_case 格式公开了各种 SSPI 函数。例如,AcquireCredentialsHandle 函数公开为 sspi.acquire_credentials_handle
。
错误以 WindowsError
的形式引发,其中包含 Windows 格式的错误消息和错误代码。对于非 Windows 主机,有一个兼容的 sspi.WindowsError
类,其结构类似于仅 Windows 的 WindowsError
内置类。一些对象和常量作为 Python 类/dataclasses/enums 公开,以便于使用。请阅读将使用的函数的 docstring,以了解更多有关如何使用它们的信息。
客户端身份验证示例
以下是如何使用此库进行客户端身份验证的基本示例
import sspi
cred = sspi.UserCredential(
"username@DOMAIN.COM",
"password",
)
ctx = sspi.ClientSecurityContext(
"host/server.domain.com",
credential=cred,
)
in_token = None
while not ctx.complete:
out_token = ctx.step(in_token)
if not out_token:
break
# exchange_with_server() is a function that sends the out_token to the
# server we are authenticating with. How this works depends on the app
# protocol being used, e.g. HTTP, sockets, LDAP, etc.
in_token = exchange_with_server(out_token)
# Once authenticated we can wrap messages when talking to the server. The final
# message being sent is dependent on the application protocol
secret = b"secret data"
wrapped_secret = ctx.wrap(secret)
server_enc_resp = exchange_with_server(wrapped_secret)
server_resp = ctx.unwrap(server_enc_resp).data
UserCredential
支持更多选项,例如选择使用的身份验证协议。需要目标服务器的服务主体名称 (SPN) 和可选凭证的 ClientSecurityContext
。可以根据需要使用其他选项来控制请求的上下文属性、通道绑定等。令牌和封装数据的发送方式取决于底层协议,此示例仅显示交换数据的时间。
非 Windows 支持
虽然 SSPI 是仅限 Windows 的 API,但此包附带与 manylinux2014_x86_64
、macosx_x86_64
和 macosx_arm64
兼容的 wheel,使用 sspi-rs。由于所有身份验证逻辑都包含在该外部 API 中,因此对此的支持是实验性的。与 Windows 上的 SSPI 的接口完全相同,因此理论上可以使用相同的代码。换句话说,与 SSPI 实际的兼容性不是 100%,因此请自行承担风险。
建议在非 Windows 平台上使用像 python-gssapi 这样的 GSSAPI 包装库。除了 x86_64
以外,Linux 上没有对其他架构的支持,因为 sspi-rs
仅支持 glibc,因此无法与基于 musl 的发行版(如 Alpine)一起使用。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
构建分发
sspi-0.1.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bec128b833d803eb2c51cc819469e1ff61a7257611cf71f91ab8575845c0f9c9 |
|
MD5 | 548611b73eb49b34765a55ec83434e5a |
|
BLAKE2b-256 | e89794915e831d9f066e8b4a60fb5509836112783efa169231fd1b6014f2d0da |
sspi-0.1.0-cp312-cp312-win_amd64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 47a34e2fdff261cd13a4dd6c8ec3f19b31a0cd2f00380002495dd17a5826a7ca |
|
MD5 | 59d2202ba9da62beb11fca19d1a33125 |
|
BLAKE2b-256 | 1f06a1525047ab0f4f6b8f058fd0e6a23ded0e207e628e572e2dd842ac838d21 |
sspi-0.1.0-cp312-cp312-win32.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6281f8b3b6a6dc5da0ecd4fcc490cbfad3a891b19bab688fbc01c4e14f6cad77 |
|
MD5 | e5f5b5675fe7dd4c70a26f3c317ab8af |
|
BLAKE2b-256 | c009e92dfa0e5fdea1b9b0bfa463ee0e01bf5226530ae1d4d03a1af936d09779 |
sspi-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 92aa7ca32f8bf1b9c00e762df94c77dd3b104531e339c2b1aa210c5e7e0303bd |
|
MD5 | ac5f4703ae289be4359f474253f74367 |
|
BLAKE2b-256 | 132d083886775d8d2d44ccfe1b4285aca85c37ee11ed2fe2566e9512e790225a |
sspi-0.1.0-cp312-cp312-macosx_11_0_arm64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c7614d71677047d5dce6bb524db71ffd65b1413230feb6a20acffa009e50b7dc |
|
MD5 | c2b66af4563bcb5f7ba9abb7970ca7b1 |
|
BLAKE2b-256 | e9f32778748140e1562361886c01901dd818e0f9bb254b3053e1845be4694db9 |
sspi-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9ce3d4aebb107d1e8eb562c88358688c45fab751fcfa09499623cc7f0f811fa9 |
|
MD5 | 49df40f0f1ae62969a38fee195385a88 |
|
BLAKE2b-256 | 45a7a29a1d7eca5c66cfd8c8bf45a68620ef56d61df01805b28a2c090d8f5180 |
sspi-0.1.0-cp311-cp311-win_amd64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7966c48f178bc8753bb9ff1019ed00be1ac9fe87f0d59d0c8e1ac62cbff0d745 |
|
MD5 | 51c13acadec1872ce59be5e8d80f25ac |
|
BLAKE2b-256 | feeec492c1c937b2a5d771156a8321202b5cf0708d26cc8578dc62bef53ba5d3 |
sspi-0.1.0-cp311-cp311-win32.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8ebd511d8bfeaaae603638a723186a98ea3a85a816a5e8e3eef745f2350a4deb |
|
MD5 | 269af9d5bfc963bc7408b223ce7b4ddb |
|
BLAKE2b-256 | 7061d1d3201d5e5e39908d6028191ca48afb1273e4ca05ec3a522b0783245413 |
sspi-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 12c4a89eb64210bbd9d22d1bdf47f2eaee0e444ffe7d2fe6b23c2f713bbcfafa |
|
MD5 | 2c2dfdf00f3ad025c4e2794a4922c0d3 |
|
BLAKE2b-256 | b487bc0eb6cdb22ed0b334dcb5a6691c73c2018ccd3e67124a84664f323edec3 |
哈希值 用于 sspi-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 300ee0f315b9ddf6ed9ad8fdfaabb8319a3936c9c6bb1d1d5175d9324dd23767 |
|
MD5 | a002620522ce9d1d046b32b4e3267f18 |
|
BLAKE2b-256 | 2b15be929f8ed5b5efa82550ee176b42838cd3d86a219046e3031aa2ab4efa5c |
哈希值 用于 sspi-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e7b125574ececda40c69034edc3a7dd240dc5634b5a37307f6a881807e8b6665 |
|
MD5 | 8c71689160bd5574df2db7fdc2f0734e |
|
BLAKE2b-256 | 20c6e08b5d4f984a4ff1440b9ba37cd1af9ca049afcae18d52fbbb9df2b47118 |
哈希值 用于 sspi-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 81eb915068fd8b9db98767f8c8adcc64f2a0b650ca31f077e43f5bb8126453c4 |
|
MD5 | 44828932159e920b8d54de4cf791b3ba |
|
BLAKE2b-256 | 2c8d1130cff8f0a5caaed0073763b1e7597f284e817f1c9c81577e3d1efd4a38 |
哈希值 用于 sspi-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ebbb3bbc1f9a9ab2cbe8d09fda41569262b1e83faf3e8506c0806f61d708f35f |
|
MD5 | 22ab3f4b4251c7c828b306e16197a279 |
|
BLAKE2b-256 | 648bb1d312c9844435bf052e3b0e5174d2e6baeba55a428cd5ac87259152f8a1 |
哈希值 用于 sspi-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e70539618798956a12171287653d67ab4741a082d9d6385de1582bea6380a351 |
|
MD5 | e2bf26b132bf8cdf3e2f98267fa0f42c |
|
BLAKE2b-256 | 7231a4c354e2d222cc2b927fd25b3f3aad2522dcc32e5e01e239935baaf7cfed |