shield
Version, currently 1.7.140 versions
- 1.7.1latestMay 6, 2026
- 1.7.0not indexedAug 9, 2026
- 1.6.0not indexedAug 9, 2026
- 1.5.0not indexedAug 9, 2026
- 1.4.1not indexedAug 9, 2026
- 1.4.0not indexedAug 9, 2026
- 1.3.1not indexedAug 9, 2026
- 1.3.0not indexedAug 9, 2026
- 1.2.2not indexedAug 9, 2026
- 1.2.1not indexedAug 9, 2026
- 1.2.0not indexedAug 9, 2026
- 1.1.2not indexedAug 9, 2026
- 1.1.1not indexedAug 9, 2026
- 1.1.0not indexedAug 9, 2026
- 1.0.2not indexedAug 9, 2026
- 1.0.1not indexedAug 9, 2026
- 1.0.0not indexedAug 9, 2026
- 0.21.0not indexedAug 9, 2026
- 0.20.0not indexedAug 9, 2026
- 0.19.0not indexedAug 9, 2026
- 0.18.0not indexedAug 9, 2026
- 0.17.0not indexedAug 9, 2026
- 0.16.0not indexedAug 9, 2026
- 0.15.0not indexedAug 9, 2026
- 0.14.0not indexedAug 9, 2026
- 0.13.1not indexedAug 9, 2026
- 0.13.0not indexedAug 9, 2026
- 0.12.0not indexedAug 9, 2026
- 0.11.0not indexedAug 9, 2026
- 0.10.0not indexedAug 9, 2026
- 0.9.0not indexedAug 9, 2026
- 0.8.0not indexedAug 9, 2026
- 0.7.0not indexedAug 9, 2026
- 0.6.0not indexedAug 9, 2026
- 0.5.1not indexedAug 9, 2026
- 0.5.0not indexedAug 9, 2026
- 0.4.0not indexedAug 9, 2026
- 0.3.0not indexedAug 9, 2026
- 0.2.0not indexedAug 9, 2026
- 0.1.0not indexedAug 9, 2026
github.com/GrottoPress/shield
Comprehensive security for Lucky framework
57 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
shield:
github: GrottoPress/shield
version: ~> 1.7.1Then run:
shards installshard.yml
- Crystal
~> 1.6- License
- MIT
- Authors
- GrottoPress <info@grottopress.com>, N Atta Kusi Adusei
Dependencies
Runtime Dependencies
- lucille~> 1.0github: GrottoPress/lucille
Development Dependencies
README
# Shield *Shield* is a comprehensive Identity & Access Management solution for [*Lucky* framework](https://luckyframework.org). It features robust authentication and authorization, including user registrations, logins and logouts, password resets and more. *Shield* is secure by default, and exploits defence-in-depth strategies, including the option to pin an authentication session to the IP address that started it -- the session is invalidated if the IP address changes. User IDs are never saved in session. Instead, each authentication gets a unique ID and token, which is saved in session, and checked against their corresponding salted SHA-256 digests in the database. When a user changes their password, *Shield* logs out the user on all devices (except the current one), to ensure that an attacker no longer has access to a previously compromised account. *Shield* supports API authentication, with regular passwords or with user-generated bearer tokens. In addition, *Shield* comes with tools to build your own OAuth 2.0 authorization server. *Shield* is designed to be resilient against critical application vulnerabilities, including brute force, user enumeration, denial of service and timing attacks. On top of these, *Shield* offers seamless integration with your application. For the most part, `include` a bunch of `module`s in the appropriate `class`es, and you are good to go! ### Design principles - #### Zero knowledge *Shield* maintains no knowledge of any secrets, and stores them such that they are irrecoverable, either by the application or by the user, if the user loses them. - #### Hashing over encryption In line with the *Zero Knowledge* principle, *Shield* prefers hashing to encryption, keeping knowledge of all secrets to the user that generated them. - #### Handles over assertions In *Shield*, the server is the source of truth, ensuring that all secrets can be revoked server-side, and instantly, whenever the need arises. - #### Deny by default *Shield* locks everything down, by default, and requires explicit action by the developer. This posture makes it difficult for an application to be *insecure by accident*. ## Quick Start Get started quickly using [*Penny*](https://github.com/GrottoPress/penny). *Penny* is a *Lucky* application scaffold that gets you up and running with *Shield*. ## Documentation Find the complete documentation of *Shield* in the `docs/` directory of this repository. ## Development Create a `.env` file: ```env DATABASE_URL=postgres://postgres:password@localhost:5432/shield_spec ``` Update the file with your own details. Then run tests with `crystal spec`. ## Contributing 1. [Fork it](https://github.com/GrottoPress/shield/fork) 1. Switch to the `master` branch: `git checkout master` 1. Create your feature branch: `git checkout -b my-new-feature` 1. Make your changes, updating changelog and documentation as appropriate. 1. Commit your changes: `git commit` 1. Push to the branch: `git push origin my-new-feature` 1. Submit a new *Pull Request* against the `GrottoPress:master` branch.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
1.7.1- Tagged
- May 6, 2026
- Commit
68776bc46ebe- Crystal
~> 1.6- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/GrottoPress/shield
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 40