跳转到主要内容

Python的Kerberos API绑定

项目描述

Python Kerberos 5库

Test workflow PyPI version License

本库提供了封装Kerberos 5 C API的Python函数。由于该API的复杂性,强烈建议使用类似 python-gssapi 的工具,该工具通过GSSAPI公开Kerberos身份验证细节。

要求

  • Kerberos 5 API的实现 - 包括头文件
  • C编译器,例如GCC
  • Python 3.6以上

注意:macOS自带Heimdal的实现,并且如果通过wheel安装,该平台不需要编译器。

安装

只需运行

pip install krb5

要从源代码安装,请运行以下命令

git clone https://github.com/jborean93/pykrb5.git
python -m pip install build
python -m build
pip install dist/krb5-*.whl

编译代码应自动选择正确的KRB5头文件路径和位置。如果需要进一步自定义,可以在构建wheel时设置以下环境变量

  • KRB5_KRB5CONFIG
    • 用于检测要链接的Kerberos库的krb5-config的路径
    • 编译器和链接器参数是从该函数输出的内容派生的
    • 默认为PATH中的krb5-config
    • FreeBSD将默认为/usr/local/bin/krb5-config而不是/usr/bin/krb5-config
  • KRB5_MAIN_LIB
    • 用于检查任何可选函数是否可用的libkrb5共享库的路径
  • KRB5_COMPILER_ARGS
    • 在编译扩展时使用的编译器标志
    • 如果未设置,则默认为krb5-config --cflags krb5的输出
  • KRB5_LINKER_ARGS
    • 在编译扩展时使用的链接器标志
    • 如果未设置,则默认为krb5-config --libs krb5的输出
  • KRB5_SKIP_MODULE_CHECK
    • 跳过用于检测可选函数是否可用的检查 - 将它们全部视为可用
    • 这仅在构建sdist时真正有用,因为没有实现提供所有这些函数
  • KRB5_CYTHON_TRACING
    • 用于生成带有行跟踪的Cython扩展,以便收集覆盖率
  • KRB5_MACOS_HEIMDAL_DIR
    • 在macOS上编译时用于指向Heimdal安装目录
    • 用于查找Heimdal头文件,因为macOS不包括或提供获取这些头文件的方法,它们的Heimdal框架
    • 默认为{git_root}/build_helpers/heimdal

开发

要运行测试或修改此存储库,请运行以下命令

git clone https://github.com/jborean93/pykrb5.git
pip install -r requirements-dev.txt
pre-commit install

python -m pip install -e .

# Can compile the krb5 extensions on an adhoc basis
# python setup.py build_ext --inplace

然后可以使用VSCode等编辑器进行更改并运行测试套件。要更改后重新编译Cython文件,请运行build_ext --inplace命令。

结构

此库只是Kerberos 5 API的包装器。在krb5命名空间下的函数与KRB5 API规范匹配,但去除了krb5_前缀。例如,krb5_init_context函数通过krb5.init_context()调用。错误以Krb5Error的形式抛出,其中包含由KRB5实现格式化的消息和该错误的错误代码。一些由这些函数返回的结构体由Python类表示,并在所有对该对象的引用被移除后释放。一些类公开了addr属性,该属性返回封装的结构体的原始指针地址。这样做是为了使结构体可用于其他库,如python-gssapi,但必须非常小心,以确保没有其他东西释放该结构体,因为这可能导致段错误。

此库中公开的所有函数并非在每个KRB5 API实现中均可用。要检查函数是否可用,请运行以下命令

import krb5

if not hasattr(krb5, "kt_dup"):
    raise Exception("Current implementation does not support krb5_kt_dup")

不同实现之间可能存在一些行为、错误代码、错误信息上的差异。当需要时,由调用者来弥合这些差异。

项目详情


下载文件

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

源分布

krb5-0.7.0.tar.gz (235.7 kB 查看哈希值)

上传时间

构建分布

krb5-0.7.0-cp313-cp313-macosx_11_0_arm64.whl (1.0 MB 查看哈希值)

上传时间 CPython 3.13 macOS 11.0+ ARM64

krb5-0.7.0-cp313-cp313-macosx_10_13_x86_64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.13 macOS 10.13+ x86-64

krb5-0.7.0-cp312-cp312-macosx_11_0_arm64.whl (1.0 MB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

krb5-0.7.0-cp312-cp312-macosx_10_13_x86_64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.12 macOS 10.13+ x86-64

krb5-0.7.0-cp311-cp311-macosx_11_0_arm64.whl (1.0 MB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

krb5-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ x86-64

krb5-0.7.0-cp310-cp310-macosx_11_0_arm64.whl (1.0 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

krb5-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl (1.1 MB 查看哈希)

上传于 CPython 3.10 macOS 10.9+ x86-64

krb5-0.7.0-cp39-cp39-macosx_11_0_arm64.whl (1.0 MB 查看哈希)

上传于 CPython 3.9 macOS 11.0+ ARM64

krb5-0.7.0-cp39-cp39-macosx_10_9_x86_64.whl (1.1 MB 查看哈希)

上传于 CPython 3.9 macOS 10.9+ x86-64

krb5-0.7.0-cp38-cp38-macosx_11_0_arm64.whl (1.0 MB 查看哈希)

上传于 CPython 3.8 macOS 11.0+ ARM64

krb5-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl (1.1 MB 查看哈希)

上传于 CPython 3.8 macOS 10.9+ x86-64

由以下机构支持