Skip to main content

Kerberos API bindings for Python

Project description

Python Kerberos 5 Library

Test workflow PyPI version License

This library provides Python functions that wraps the Kerberos 5 C API. Due to the complex nature of this API it is highly recommended to use something like python-gssapi which exposes the Kerberos authentication details through GSSAPI.

Requirements

  • An implementation of the Kerberos 5 API - including the header files
  • A C compiler, such as GCC
  • Python 3.6+

Note: macOS includes their own implementation of Heimdal and a compiler isn't needed on that platform if installing from the wheel.

Installation

Simply run:

pip install krb5

To install from source run the following:

git clone https://github.com/jborean93/pykrb5.git
pip install Cython
python setup.py bdist_wheel
pip install dist/krb5-*.whl

Compiling the code should automatically pick up the proper paths for the KRB5 headers and locations. If further customisation is needed, the following environment variables can be set when building the wheel:

  • KRB5_KRB5CONFIG
    • The path to krb5-config to use for detecting the Kerberos library to link to
    • The compiler and linker args are derived from what this function outputs
    • Defaults to whatever krb5-config is on the PATH
    • FreeBSD will default to /usr/local/bin/krb5-config instead of /usr/bin/krb5-config
  • KRB5_MAIN_LIB
    • The path to the libkrb5 shared library used to check if any of the optional functions are available
  • KRB5_COMPILER_ARGS
    • Compiler flags to use when compiling the extensions
    • Defaults to the output of krb5-config --cflags krb5 if not set
  • KRB5_LINKER_ARGS
    • Linker flags to use when compiling the extensions
    • Defaults to the output of krb5-config --libs krb5 if not set
  • KRB5_SKIP_MODULE_CHECK
    • Skips the checks used to detect if optional functions are available - will treat them all as available
    • This is only really useful when building the sdist as no implementation provides all these functions
  • KRB5_CYTHON_TRACING
    • Used to generate the Cython extensions with line tracing for coverage collection
  • KRB5_MACOS_HEIMDAL_DIR
    • Used when compiling on macOS to point to the Heimdal install directory
    • Used to find the Heimdal header files as macOS does not include, or provide a way to obtain, these header files for their Heimdal framework
    • Defaults to {git_root}/build_helpers/heimdal

Development

To run the tests or make changes to this repo run the following:

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

python setup.py build_ext --inplace

From there an editor like VSCode can be used to make changes and run the test suite. To recompile the Cython files after a change run the build_ext --inplace command.

Structure

This library is merely a wrapper around the Kerberos 5 APIs. The functions under the krb5 namespace match the KRB5 API specification but with the krb5_ prefix remove. For example the krb5_init_context function is called through krb5.init_context(). Errors are raised as a Krb5Error which contains the message as formatted by the KRB5 implementation and the error code for that error. Some of the structures returned by these functions are represented by a Python class and are freed once they are deallocated once all references to that object is removed. Some classes expose an addr property that returns the raw pointer address of the structure it is wrapping. This is so the structure can be used in other libraries like python-gssapi but great care must be taken that nothing else frees the structure as that could cause a segmentation fault.

Not all the functions exposed in this library are available on every KRB5 API implementation. To check if a function is available run the following:

import krb5

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

There may also be some difference in behaviour, error codes, error messages, between te different implementations. It is up to the caller to paper over these differences when required.

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

krb5-0.1.1.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

krb5-0.1.1-cp39-cp39-macosx_11_0_arm64.whl (455.2 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

krb5-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl (501.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

krb5-0.1.1-cp38-cp38-macosx_11_0_arm64.whl (443.5 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

krb5-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl (487.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

krb5-0.1.1-cp37-cp37m-macosx_10_9_x86_64.whl (489.5 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

krb5-0.1.1-cp36-cp36m-macosx_10_9_x86_64.whl (491.2 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

Details for the file krb5-0.1.1.tar.gz.

File metadata

  • Download URL: krb5-0.1.1.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for krb5-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0228e07b16da996e638bb088594642662ac560eede53e67af4f6bea00186c0c2
MD5 ff8a4b80aab9d809862fd8acb811f750
BLAKE2b-256 b2d3141c79d0ca9b505a692939a49108dce03eeaeb532e0528571756b788afcd

See more details on using hashes here.

Provenance

File details

Details for the file krb5-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: krb5-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 455.2 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for krb5-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae210f1030c65d37fa5b0dda905ecefef9704bdee329eaafeafa7d893e87e15f
MD5 2614921dfa77fb75030ec7d146691747
BLAKE2b-256 9c9c7fa346d65df038888ae74a3e302f6bb4899242831f039a48363b6aef691f

See more details on using hashes here.

Provenance

File details

Details for the file krb5-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: krb5-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 501.7 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for krb5-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 138f238bdb296d606a02f0d19438d9e82caadf9e781ff93243fed3d9afd6638f
MD5 ebb9edd05df9cd2c1da809ea041c792f
BLAKE2b-256 94f8f7c5db79b02166d0c6c84e0f86e2d47857e5405e178f791c8fbcb03a9b23

See more details on using hashes here.

Provenance

File details

Details for the file krb5-0.1.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: krb5-0.1.1-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 443.5 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for krb5-0.1.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 378550fdc2d789d5220b431d312978a0cbe91db0c2d1a9e2bce18173bb36e27b
MD5 995198686a195d631c214e4136f0a506
BLAKE2b-256 33421e3b79a6c58f71fd1605649a8788697f0053da25f1210f63ae4532d0054e

See more details on using hashes here.

Provenance

File details

Details for the file krb5-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: krb5-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 487.4 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for krb5-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c8efae08821be5736719ec2e7aaab3374b4ed125544d769d1cfef96e2c0a15fb
MD5 d64e6d6386cce74e3ac482d74cc813c1
BLAKE2b-256 aa9bb73a937f84a01a23112503d1d707acff0e3a0aeca453df1ed4c808bab063

See more details on using hashes here.

Provenance

File details

Details for the file krb5-0.1.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: krb5-0.1.1-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 489.5 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for krb5-0.1.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c82c5430c196f8eda1e0d2d1fefe428a7f4ee01c6361081ad18ac17d302b95d0
MD5 49f1510ad18d2ad7bf32a384af1e268f
BLAKE2b-256 066ddd59c4ceca8a9961b206e025e8fd99dc73fce61871ae98e4153876aa1e09

See more details on using hashes here.

Provenance

File details

Details for the file krb5-0.1.1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: krb5-0.1.1-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 491.2 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for krb5-0.1.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 934f2a1684052edb280f60e8b4e3962a9444e094684060681930900b015ce7f0
MD5 41a9d3366eba0ada8ae5b2764948ed0f
BLAKE2b-256 432eb48033ec68355d7fbc29bd1acaf1f23015105626cf1bf0ddf73ce998d9f6

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page