{"id":22058721,"url":"https://github.com/hackthissite/catslap","last_synced_at":"2025-06-30T00:02:51.789Z","repository":{"id":138956855,"uuid":"151744423","full_name":"HackThisSite/Catslap","owner":"HackThisSite","description":"LDAP REST microservice with Password Policy overlay support","archived":false,"fork":false,"pushed_at":"2022-11-27T03:40:15.000Z","size":545,"stargazers_count":11,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-09T12:28:54.496Z","etag":null,"topics":["api","ldap","ldap-authentication","openldap","overlay","perl","rest"],"latest_commit_sha":null,"homepage":null,"language":"Perl","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/HackThisSite.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}},"created_at":"2018-10-05T15:50:49.000Z","updated_at":"2024-09-09T10:25:38.000Z","dependencies_parsed_at":"2023-09-25T23:30:01.905Z","dependency_job_id":null,"html_url":"https://github.com/HackThisSite/Catslap","commit_stats":{"total_commits":2,"total_committers":2,"mean_commits":1.0,"dds":0.5,"last_synced_commit":"06d6d22839ec5624e137e663702e5b843d59e5cc"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackThisSite%2FCatslap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackThisSite%2FCatslap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackThisSite%2FCatslap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackThisSite%2FCatslap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HackThisSite","download_url":"https://codeload.github.com/HackThisSite/Catslap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253809712,"owners_count":21967779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api","ldap","ldap-authentication","openldap","overlay","perl","rest"],"created_at":"2024-11-30T17:24:39.418Z","updated_at":"2025-05-12T19:43:45.374Z","avatar_url":"https://github.com/HackThisSite.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Catslap\n![Cat Slap!](doc/img/catslap.gif)\n\nLDAP REST microservice with Password Policy overlay support\n\n## The \"Why\"\n\nBecause why not? ![:D](doc/img/awesome-icon.gif)\n\n### Why should I use it?\n\nOpenLDAP comes with the awesome [Password Policy](http://www.zytrax.com/books/ldap/ch6/ppolicy.html) overlay, which adds password and authentication policy enforcement directly into SLAPD itself. This layer of security is immediately applied against any system using LDAP as an authentication provider with zero client-side changes.\n\n***However!*** Such overlays are part of LDAPv3, which adds richer return data, but most common languages do not support providing this data when using the `bind` function. An LDAP bind will work the same regardless, but will lack this informative data (e.g. account locked, password reset required, etc.).\n\n*Catslap* provides this detailed LDAP authentication as a REST microservice that can be incorporated into any application's authentication process. *Catslap* also acts as middleware security to isolate your LDAP services from your other applications (your apps won't require administrative bind credentials). Also, because *Catslap* is powered by [Mojolicious](http://mojolicious.org), horizontal scaling and zero-downtime hot redeployment are effortless through the built-in [Hypnotoad](http://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Hypnotoad) pre-forking web server.\n\n### Why Perl?\n\nThe [`Net::LDAP`](https://metacpan.org/pod/Net::LDAP) Perl module includes full support for the LDAPv3 Password Policy overlay (via the [`Net::LDAP::Control::PasswordPolicy`](https://metacpan.org/pod/Net::LDAP::Control::PasswordPolicy) module). Perl is seemingly the only major web language with such complete support.\n\n### Why the name?\n\nThere is a utility that comes with OpenLDAP called [`slapcat`](https://linux.die.net/man/8/slapcat)`(8)`, and since bad puns are ***the*** highest form of comedy, *Catslap* was born! :D\n\n## Installation\n\n**Notice**: This assumes we will be installing and running *Catslap* as the `meow` user, installed in `/home/meow/catslap`.\n\n### Requirements\n\n* Perl 5.20 or greater\n* [cpanminus](https://github.com/miyagawa/cpanminus) or [Carton](https://github.com/perl-carton/carton)\n* OpenLDAP SLAPD service with Password Policy overlay, users, superusers, and groups configured\n\n#### Perl Dependencies\n\nThese will be installed in the next step.\n\n* [Mojolicious](https://metacpan.org/pod/Mojolicious)\n* [Net::LDAP](https://metacpan.org/pod/Net::LDAP)\n\n### Install\n\n1. `cd` to the parent directory where *Catslap* will be installed:\n\n```\nmeow@server:/home/meow$ cd /home/meow/catslap\n```\n\n2. Install the Perl CPAN module dependencies:\n\n\n```\n# if using cpanminus\n# (include the trailing dot!)\nmeow@server:/home/meow/catslap$ cpanm --installdeps .\n\n# if using Carton\nmeow@server:/home/meow/catslap$ carton install\n```\n\n3. Configure *Catslap*, by copying `catslap.conf.example` to `catslap.conf` and editing it, following the comments within.\n\n4. Set *Catslap* to start with your server using either the supplied startup scripts, or using system utilities like Systemd or Supervisord.\n\n## Usage\n\n**Notice**: This assumes we installed *Catslap* as the `meow` user in `/home/meow/catslap`.\n\n```\nmeow@server:/home/meow/catslap$ ./bin/catslap\nCatslap listening on http://localhost:31195/\nmeow@server:/home/meow/catslap$\n```\n\n-----\n\n\u003csmall\u003eNo cats were slapped in the making of this software. =^^=\u003c/small\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackthissite%2Fcatslap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackthissite%2Fcatslap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackthissite%2Fcatslap/lists"}