Coder Social home page Coder Social logo

sanglist / python-gssapi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pythongssapi/python-gssapi

0.0 0.0 0.0 4.19 MB

A Python interface to RFC 2743/2744 (plus common extensions)

License: ISC License

Shell 1.79% Python 64.35% C 0.69% Cython 33.17%

python-gssapi's Introduction

Python-GSSAPI

Python-GSSAPI provides both low-level and high level wrappers around the GSSAPI C libraries. While it focuses on the Kerberos mechanism, it should also be useable with other GSSAPI mechanisms.

Documentation can be found at https://pythongssapi.github.io/python-gssapi/.

Requirements

Basic

  • A working implementation of GSSAPI (such as from MIT Kerberos) which supports delegation and includes header files
  • a C compiler (such as GCC)
  • Python 3.7+ (older releases support older versions, but are unsupported)
  • the decorator python package

Compiling from Scratch

To compile from scratch, you will need Cython >= 0.29.29 which is automatically installed by pip in an isolated build virtual environment.

For Running the Tests

  • the k5test package

To install test dependencies using pip:

$ pip install -r test-requirements.txt # Optional, for running test suite

Installation

Easy Way

$ pip install gssapi

From the Git Repo

After being sure to install all the requirements,

$ git clone https://github.com/pythongssapi/python-gssapi.git
$ pip install .

Tests

The tests for for Python-GSSAPI live in gssapi.tests. In order to run the tests, you must have an MIT Kerberos installation (including the KDC). The tests create a self-contained Kerberos setup, so running the tests will not interfere with any existing Kerberos installations.

Structure

Python-GSSAPI is composed of two parts: a low-level C-style API which thinly wraps the underlying RFC 2744 methods, and a high-level, Pythonic API (which is itself a wrapper around the low-level API). Examples may be found in the examples directory.

Low-Level API

The low-level API lives in gssapi.raw. The methods contained therein are designed to match closely with the original GSSAPI C methods. All relevant methods and classes may be imported directly from gssapi.raw. Extension methods will only be imported if they are present. The low-level API follows the given format:

  • Names match the RFC 2744 specification, with the gssapi_ prefix removed
  • Parameters which use C int constants as enums have enum.IntEnum classes defined, and thus may be passed either the enum members or integers
  • In cases where a specific constant is passed in the C API to represent a default value, None should be passed instead
  • In cases where non-integer constants would be used in the API (i.e. OIDs), enum-like objects have been defined containing named references to values specified in RFC 2744.
  • Major and minor error codes are returned by raising gssapi.raw.GSSError. The major error codes have exceptions defined in in gssapi.raw.exceptions to make it easier to catch specific errors or categories of errors.
  • All other relevant output values are returned via named tuples.

High-Level API

The high-level API lives directly under gssapi. The classes contained in each file are designed to provide a more Pythonic, Object-Oriented view of GSSAPI. The exceptions from the low-level API, plus several additional exceptions, live in gssapi.exceptions. The rest of the classes may be imported directly from gssapi. Only classes are exported by gssapi -- all functions are methods of classes in the high-level API.

Please note that QoP is not supported in the high-level API, since it has been deprecated.

Extensions

In addition to RFC 2743/2744, Python-GSSAPI also has support for:

  • RFC 4178 (GSS-API Negotiation Mechanism)
  • RFC 5587 (Extended GSS Mechanism Inquiry APIs)
  • RFC 5588 (GSS-API Extension for Storing Delegated Credentials)
  • RFC 5801 (GSS-API SASL Extensions)
  • (Additional) Credential Store Extension
  • Services4User
  • Credentials import-export
  • RFC 6680 (GSS-API Naming Extensions)
  • DCE and IOV MIC extensions
  • acquire_cred_with_password and add_cred_with_password
  • GGF Extensions
  • Kerberos specific extensions

The Team

(GitHub usernames in parentheses)

  • Jordan Borean (@jborean93) - current maintainer and developer
  • Simo Sorce (@simo5) - developer
  • Robbie Harwood (@frozencemetery) - author emeritus
  • Solly Ross (@directxman12) - author emeritus
  • Hugh Cole-Baker (@sigmaris) - author emeritus

Get Involved

We welcome new contributions in the form of Issues and Pull Requests on Github. If you would like to join our discussions, you can find us on libera.chat IRC, channel #python-gssapi.

python-gssapi's People

Contributors

directxman12 avatar frozencemetery avatar jborean93 avatar cipherboy avatar aiudirog avatar simo5 avatar sigmaris avatar uniontech-lilinjie avatar stanislavlevin avatar iboukris avatar sanglist avatar rebeccc avatar lonetwin avatar steffen-kiess avatar simmel avatar pefoley2 avatar pdecat avatar michael-o avatar neirbowj avatar erinn avatar tiran avatar tengcm2015 avatar filmor avatar asheshv avatar totaam avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.