Skip to main content

Auth(n/z) plugin for Django using kerberos + LDAP

Project description

django-kaminarimon

What is it?

django-kaminarimon (or just kaminarimon) is a library for integrating kerberos authentication and ldap authorization into a Django/DRF application.

While users can independently choose to integrate one or the other, it is designed to use both and use JWTs as interface for client<->server auth.

How to use

For Kerberos authentication

Set kaminarimon.auth.KerberosAuthentication as either:

  • REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"]
  • Individually at the view level

This will require the client to send a request with the header Authorization: Negotiate <token> which will initiate the SPNEGO protocol.

If the client does not send the aforementioned header when requesting a view that requires Kerberos authentication, the WWW-Authenticate is sent back to the client, signaling that it should use SPNEGO protocol for authentication.

[!TIP] By default the host or service principal will use the service's FQDN, but it can be overridden by setting the KRB5_HOSTNAME environment variable.

For LDAP authorization

[!NOTE] A lot of the behavior of this authentication backend is currently hardcoded to only work with Red Hat systems.

[!NOTE] Anonymous user access to the LDAP server is required for querying user information.

[!WARNING] Usage of LDAP authorization on its own withour Kerberos authentication is discouraged as it only handles authorization, it does not actually perform any sort of authentication of the user against the LDAP server, i.e. it simply loads the user's groups from the LDAP server.

Simply add the kaminarimon.backend.LDAPRemoteUser to the AUTHENTICATION_BACKENDS django setting.

Required settings:

  • AUTH_LDAP_SERVER_URI -- URI to the LDAP server
  • PUBLIC_READ_GROUPS -- List of names of groups that, if the user is a member of, grant access to the application. SERVICE_MANAGE_GROUP -- Group that denotes a user as staff and/or superuser.

Intended usage (kerberos authentication, ldap authorization)

The same settings, warnings, notes and tips for the previous sections apply.

Ensure kaminarimon.backend.LDAPRemoteUser is in AUTHENTICATION_BACKENDS, and add kaminarimon.views.krb5_obtain_token_pair_view to your urls.py, it is through this view that clients will obtain access and refresh JWT.

In order to protect other views with such authentication tokens, simply mark the authentication method as rest_framework_simplejwt.authentication.JWTAuthentication or similar as, or set it globally using DEFAULT_AUTHENTICATION_CLASSES.

Running tests

cd tests/
podman compose -f docker-compose.yml up -d
pytest .

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

django_kaminarimon-0.1.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_kaminarimon-0.1.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file django_kaminarimon-0.1.0.tar.gz.

File metadata

  • Download URL: django_kaminarimon-0.1.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.2

File hashes

Hashes for django_kaminarimon-0.1.0.tar.gz
Algorithm Hash digest
SHA256 447147b81390fbfa2ef6ad8c563a410a73eb8985a5b9a027680bab46eedeb9c2
MD5 b02d1e8915294076116204424aff49fd
BLAKE2b-256 bb2e372b08f62359b6413394685eca44c66db81c0eb0a6c26da0c972959df9b9

See more details on using hashes here.

File details

Details for the file django_kaminarimon-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_kaminarimon-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 00f68c0a49f205741878d761d32a390685eeea68c919e8ad13da861d5d4b9e32
MD5 305414a96e351029439220d863c90057
BLAKE2b-256 b792c71bd92a33a2f4d668f7058a2391774f7b1c01643f37cd4b79ceb0a1eaf4

See more details on using hashes here.

Supported by

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