{"id":49668116,"url":"https://github.com/authentik-community/kadmin-rs","last_synced_at":"2026-05-06T18:01:13.837Z","repository":{"id":261104700,"uuid":"883228873","full_name":"authentik-community/kadmin-rs","owner":"authentik-community","description":"Rust and Python interfaces to the Kerberos administration interface (kadm5)","archived":false,"fork":false,"pushed_at":"2026-05-05T11:15:07.000Z","size":851,"stargazers_count":2,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-05T13:26:45.815Z","etag":null,"topics":["kadm5","kadmin","kerberos","krb5","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/authentik-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-04T15:44:09.000Z","updated_at":"2026-05-05T11:15:10.000Z","dependencies_parsed_at":"2024-11-04T18:38:02.235Z","dependency_job_id":"0c2d0e51-0058-4141-ba0a-63316b971510","html_url":"https://github.com/authentik-community/kadmin-rs","commit_stats":null,"previous_names":["authentik-community/kadmin-rs"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/authentik-community/kadmin-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authentik-community%2Fkadmin-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authentik-community%2Fkadmin-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authentik-community%2Fkadmin-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authentik-community%2Fkadmin-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/authentik-community","download_url":"https://codeload.github.com/authentik-community/kadmin-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authentik-community%2Fkadmin-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32705620,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kadm5","kadmin","kerberos","krb5","rust"],"created_at":"2026-05-06T18:01:12.131Z","updated_at":"2026-05-06T18:01:13.828Z","avatar_url":"https://github.com/authentik-community.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust and Python bindings for the Kerberos administration interface (kadm5)\n\nThis repository contains both a work-in-progress safe, idiomatic Rust bindings for libkadm5, the library to administrate a Kerberos realm that supports the Kerberos administration interface (mainly Heimdal and MIT Kerberos 5).\n\nIt also contains a Python API to those bindings.\n\n## kadmin\n\n![Crates.io Version](https://img.shields.io/crates/v/kadmin)\n![docs.rs](https://img.shields.io/docsrs/kadmin)\n![Maintenance](https://img.shields.io/maintenance/maintained/2026)\n\nThis is a safe, idiomatic Rust interface to libkadm5.\n\nThis library does not link against libkadm5, but instead loads it at runtime to be able to\nsupport multiple variants.\n\nIt provides four features, all enabled by default, for the supported variants of libkadm5:\n\n- `mit_client`\n- `mit_server`\n- `heimdal_client`\n- `heimdal_server`\n\nFor remote operations:\n\n```rust\nuse kadmin::{KAdm5Variant, KAdmin, KAdminImpl};\n\nlet princ = \"user/admin@EXAMPLE.ORG\";\nlet password = \"vErYsEcUrE\";\n\nlet kadmin = KAdmin::builder(KAdm5Variant::MitClient)\n    .with_password(\u0026princ, \u0026password)\n    .unwrap();\n\ndbg!(\"{}\", kadmin.list_principals(None).unwrap());\n```\n\nFor local operations:\n\n```rust\nuse kadmin::{KAdm5Variant, KAdmin, KAdminImpl};\n\nlet kadmin = KAdmin::builder(KAdm5Variant::MitServer)\n    .with_local()\n    .unwrap();\n\ndbg!(\"{}\", kadmin.list_principals(None).unwrap());\n```\n\n#### About compilation\n\nDuring compilation, all the enabled variants will be discovered and bindings will be generated\nfrom the discovered variants. If a variant cannot be discovered, it will not be available for\nuse. The following environment variables are available to override that discovery process:\n\nTo override the directories in which the `kadm5/admin.h` header will be searched for:\n\n- `KADMIN_MIT_CLIENT_INCLUDES`\n- `KADMIN_MIT_SERVER_INCLUDES`\n- `KADMIN_HEIMDAL_CLIENT_INCLUDES`\n- `KADMIN_HEIMDAL_SERVER_INCLUDES`\n\nTo override the path to the `krb5-config` binary:\n\n- `KADM5_MIT_CLIENT_KRB5_CONFIG`\n- `KADM5_MIT_SERVER_KRB5_CONFIG`\n- `KADM5_HEIMDAL_CLIENT_KRB5_CONFIG`\n- `KADM5_HEIMDAL_SERVER_KRB5_CONFIG`\n\nLibrary paths will also be looked for, and forwarded so that at runtime, the library can be\nloaded. If it cannot find any, it will try to load a generic library from the system library\npaths. You can override the path the library is loaded from with [`sys::Library::from_path`].\n\n#### About thread safety\n\nAs far as I can tell, libkadm5 APIs are **not** thread safe. As such, the types provided by this crate are neither `Send` nor `Sync`. You _must not_ use those with threads. You can either create a `KAdmin` instance per thread, or use the `kadmin::sync::KAdmin` interface that spawns a thread and sends the various commands to it. The API is not exactly the same as the non-thread-safe one, but should be close enough that switching between one or the other is easy enough. Read more about this in the documentation of the crate.\n\n## python-kadmin-rs\n\n![PyPI - Version](https://img.shields.io/pypi/v/python-kadmin-rs)\n![Read the Docs](https://img.shields.io/readthedocs/kadmin-rs)\n![Maintenance](https://img.shields.io/maintenance/maintained/2026)\n\nThese are Python bindings to the above Rust library, using the `kadmin::sync` interface to ensure thread safety.\n\nFor remote operations:\n\n```python\nimport kadmin\n\nprinc = \"user/admin@EXAMPLE.ORG\"\npassword = \"vErYsEcUrE\"\nkadm = kadmin.KAdmin.with_password(kadmin.KAdm5Variant.MitClient, princ, password)\nprint(kadm.list_principals(\"*\"))\n```\n\nFor local operations:\n\n```python\nimport kadmin\n\nkadm = kadmin.KAdmin.with_local(kadmin.KAdm5Variant.MitClient)\nprint(kadm.list_principals(\"*\"))\n```\n\nSee the [API reference](https://kadmin-rs.readthedocs.io) for more information.\n\n## License\n\nLicensed under the [MIT License](./LICENSE).\n\n## Contributing\n\nJust open a PR.\n\n### Releasing\n\n1. Go to [Actions \u003e Create release PR](https://github.com/authentik-community/kadmin-rs/actions/workflows/release-pr.yml)\n2. Click \"Run workflow\" and select what you need to release and input the new version.\n3. Wait for the PR to be opened and the CI to pass\n4. Merge the PR.\n5. Go to [Releases](https://github.com/authentik-community/kadmin-rs/releases)\n6. Edit the created release.\n7. Click \"Generate release notes\"\n8. Publish\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthentik-community%2Fkadmin-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fauthentik-community%2Fkadmin-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthentik-community%2Fkadmin-rs/lists"}