Python的SSPI API绑定
项目描述
Python SSPI库
该库提供了封装Windows SSPI API的Python函数。它被设计成既可以作为高层接口也可以作为底层接口,方便其他库利用以进行SSPI集成。高层接口位于sspilib
命名空间下,而底层接口位于sspilib.raw
接口下。
需求
- Python 3.8+
编译代码需要更多的需求,但该库以wheel形式提供,所以安装时不是必须的。
安装
只需运行以下命令
pip install sspilib
从源代码安装,请运行以下命令
git clone https://github.com/jborean93/sspilib.git
python -m pip install build
python -m build
pip install dist/sspilib-*.whl
开发
要运行测试或修改此存储库,请运行以下命令
git clone https://github.com/jborean93/sspilib.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编译来自sspi-rs
的libsspi
版本。必须在编译时提供与头文件一起的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的封装。位于sspilib
下的高层API公开了易于使用的Python API来使用SSPI。位于sspilib.raw
命名空间下的函数以更Pythonic的snake_case格式公开了各种SSPI函数。例如,AcquireCredentialsHandle函数公开为sspilib.raw.acquire_credentials_handle
。
错误以WindowsError
的形式抛出,其中包含Windows格式化的错误消息和错误代码。对于非Windows宿主,有一个兼容的sspilib.WindowsError
类,其结构与Windows特有的WindowsError
内置结构相似。一些对象和常量作为Python类/dataclasses/enums公开,以便于使用。请阅读将要使用的函数的docstring以了解更多有关它们的使用方法。
客户端认证示例
以下是一个使用此库进行客户端认证的基本示例
import sspilib
cred = sspilib.UserCredential(
"username@DOMAIN.COM",
"password",
)
ctx = sspilib.ClientSecurityContext(
credential=cred,
target_name="host/server.domain.com",
)
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
支持更多选项,例如选择使用的认证协议。需要使用ClientSecurityContext
提供的凭证和目标服务器的主服务名(SPN)。根据需要,其他选项可以用来控制请求的上下文属性、通道绑定等。令牌和包装数据的发送方式取决于底层协议,此示例仅显示何时交换数据。
非Windows支持
虽然SSPI是仅适用于Windows的API,但此软件包附带与manylinux2014_x86_64
、macosx_x86_64
和macosx_arm64
兼容的wheel,这些wheel使用sspi-rs
。此支持是实验性的,因为所有的认证逻辑都包含在该外部API中。sspi-rs
的接口与Windows上的SSPI完全相同,因此理论上可以使用相同的代码。然而,必须指出,与实际SSPI的兼容性并非100%,因此请自行承担风险。
建议在非Windows平台(如python-gssapi)上使用封装GSSAPI的库。在Linux上除x86_64
以外的任何架构上都没有支持,因为sspi-rs
仅支持glibc,因此它不能与基于musl的发行版(如Alpine)一起使用。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源代码分发
构建版本
sspilib-0.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4d6cd4290ca82f40705efeb5e9107f7abcd5e647cb201a3d04371305938615b8 |
|
MD5 | 7d5d32166d8129632b0189017f6b21c7 |
|
BLAKE2b-256 | 36488d634ac9aa5404b77f2d66b5a354751b7bbbf2be2947328fe895034cb750 |
sspilib-0.2.0-cp313-cp313-win_arm64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 863b7b214517b09367511c0ef931370f0386ed2c7c5613092bf9b106114c4a0e |
|
MD5 | 253b89da858ee92ddf79ea505af2f45c |
|
BLAKE2b-256 | dd843232ee82e33e426cd9e2011111a3136e5715428f0331a6739930b530333a |
sspilib-0.2.0-cp313-cp313-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c39a698491f43618efca8776a40fb7201d08c415c507f899f0df5ada15abefaa |
|
MD5 | f805b17e9a1c5ca26d4eb535b5b54c57 |
|
BLAKE2b-256 | 49ad40f898075c913c75060c17c9cc6d6b86e8f83b6f5e1e017627b07ff53fcd |
sspilib-0.2.0-cp313-cp313-win32.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9044d6020aa88d512e7557694fe734a243801f9a6874e1c214451eebe493d92 |
|
MD5 | 9802ea8dd887fcc9082c5e21c7f97559 |
|
BLAKE2b-256 | bc9c8784d3afe27c2f68620ea60fa2b6347100694db35193ba42714bdf23f882 |
sspilib-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ad7943fe14f8f6d72623ab6401991aa39a2b597bdb25e531741b37932402480f |
|
MD5 | 1c5cfa1f91ba835652f5b9b795f6d9d2 |
|
BLAKE2b-256 | f0641a1dbf997e790582512871c4a68ae04d76dac2944a0fa7441c61d7e11b45 |
sspilib-0.2.0-cp313-cp313-macosx_11_0_arm64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 02d8e0b6033de8ccf509ba44fdcda7e196cdedc0f8cf19eb22c5e4117187c82f |
|
MD5 | 29a721f74b2a38ecff7c5bfafb08540b |
|
BLAKE2b-256 | ac6d84b869bfe5c338a65ce97375167ed2ebd1a21cc11f97d1cdadb78448b313 |
sspilib-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 40ff410b64198cf1d704718754fc5fe7b9609e0c49bf85c970f64c6fc2786db4 |
|
MD5 | e4246a799def70cea62443a8daadb298 |
|
BLAKE2b-256 | c8f0bbb3ba818869c27f86f0c7d29af110312ba9890814a59213802fd2851bab |
sspilib-0.2.0-cp312-cp312-win_arm64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8ffc09819a37005c66a580ff44f544775f9745d5ed1ceeb37df4e5ff128adf36 |
|
MD5 | 8a71578eada5b3017937d6f0702e9597 |
|
BLAKE2b-256 | 8f52c7a16472e9582474626f48ec79a821f66e5698cf5552baf923dfc636989e |
哈希值 用于 sspilib-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e48dceb871ecf9cf83abdd0e6db5326e885e574f1897f6ae87d736ff558f4bfa |
|
MD5 | 0a36d363924fbb3c349f376f4335811a |
|
BLAKE2b-256 | 61a2de6f331daeab9c1e07dfc275cdeeac71999a2049183a9612911f7bf0861c |
哈希值 用于 sspilib-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1208720d8e431af674c5645cec365224d035f241444d5faa15dc74023ece1277 |
|
MD5 | f2ef57c6618a9a23ae13cbb37f235cb5 |
|
BLAKE2b-256 | 76fe972298d2c0f2607f90a5861f4ea6d13d64ee94b00826be15320f644aea4b |
哈希值 用于 sspilib-0.2.0-cp312-cp312-macosx_10_13_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | abac93a90335590b49ef1fc162b538576249c7f58aec0c7bcfb4b860513979b4 |
|
MD5 | 158c9e40b7fa19b4268ca54ae27eb596 |
|
BLAKE2b-256 | 8d0b01d0c81e812143b5231473467a9adf64528ddbeacade2a77e47fb6878213 |
哈希值 用于 sspilib-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1a6c33495a3de1552120c4a99219ebdd70e3849717867b8cae3a6a2f98fef405 |
|
MD5 | 38e92b9a9fdf52b30dd040a2bb7595d0 |
|
BLAKE2b-256 | b7d46476be316c1dd71056f7a9d1a774dccb941d432fe1b563a7a3608164b20f |
哈希值 用于 sspilib-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d1cdfc5ec2f151f26e21aa50ccc7f9848c969d6f78264ae4f38347609f6722df |
|
MD5 | 54aa4eb97d127e4ee374c167e2ca5557 |
|
BLAKE2b-256 | 3fe272050c35a15bc657d16a24c183a92d8884141d59077e52dd09b0ff3b7c3a |
哈希值 用于 sspilib-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e0943204c8ba732966fdc5b69e33cf61d8dc6b24e6ed875f32055d9d7e2f76cd |
|
MD5 | 37107e1f5da7271dbd32499525d51a79 |
|
BLAKE2b-256 | 7794a3d8cb0f0c3c26a1835fb629087b1f89a0eb18a400758f6864bdd14cf0a9 |
哈希值 用于 sspilib-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3e82f87d77a9da62ce1eac22f752511a99495840177714c772a9d27b75220f78 |
|
MD5 | 4bd470efdc2073cd9fa4af631687d69f |
|
BLAKE2b-256 | 7ed67896115cb940bfecdb6690fdb53a9045ebf930e795c306176d97a9490c68 |
哈希值 用于 sspilib-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5b11e4f030de5c5de0f29bcf41a6e87c9fd90cb3b0f64e446a6e1d1aef4d08f5 |
|
MD5 | c5eb87ffcee818be42b6a138d7153557 |
|
BLAKE2b-256 | 48b4288f576cad5adee838506fedfa962eb4efbde432da5fca4fba81c24d6ad1 |
哈希值 用于 sspilib-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 34f566ba8b332c91594e21a71200de2d4ce55ca5a205541d4128ed23e3c98777 |
|
MD5 | c1db9903db340a0e59044b436355236a |
|
BLAKE2b-256 | e087316f08a517292576e492742ca16edb7f4a2c73fbba562554a7e58e0cddff |
哈希值 用于 sspilib-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1c5f84b9f614447fc451620c5c44001ed48fead3084c7c9f2b9cefe1f4c5c3d0 |
|
MD5 | 094c80668c1110fb4b95fbedae648fb7 |
|
BLAKE2b-256 | 4ff3e2888a36cb73040d546eba07805a38d9c0bd40af946f07f6d194eaf813d3 |
哈希值 用于 sspilib-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0216344629b0f39c2193adb74d7e1bed67f1bbd619e426040674b7629407eba9 |
|
MD5 | 4029b29870862553f0e75ceea4308d97 |
|
BLAKE2b-256 | 04d194710f110cc284a2dd546ee09affe12865ab47f0fd5f433de2d3be263d58 |
哈希值 用于 sspilib-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6944a0d7fe64f88c9bde3498591acdb25b178902287919b962c398ed145f71b9 |
|
MD5 | ba0930cbde454c7de678868442a4de93 |
|
BLAKE2b-256 | 3c30a03d8c2fb96dc84b1478dd9df43f33e85260e681371fead30f221487123f |
哈希值 用于 sspilib-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9460258d3dc3f71cc4dcfd6ac078e2fe26f272faea907384b7dd52cb91d9ddcc |
|
MD5 | 4b8e69e2e9b8c8b9a6bbe4b499c6354a |
|
BLAKE2b-256 | df02a8167a89e1e91774ecc127ab290c1af671fe118142b8cd2828e8228da3b2 |
哈希值 用于 sspilib-0.2.0-cp38-cp38-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bd95df50efb6586054963950c8fa91ef994fb73c5c022c6f85b16f702c5314da |
|
MD5 | 0f654c4e3bc5ae3b418a1601cc6bdf9e |
|
BLAKE2b-256 | c52788b240378f31119cb889b241eb8f2bae82d98ef5748e52f68653d9a41808 |
哈希值 用于 sspilib-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a0ede7afba32f2b681196c0b8520617d99dc5d0691d04884d59b476e31b41286 |
|
MD5 | 906d45232ba09c7d23e5683c630568c6 |
|
BLAKE2b-256 | 933b179e92a5d2465fee7e9e7fad6849a7b3a6cf7e0db28fb8c8952ab105b43f |