An extensible authentication and authorization library for Clojure Ring web applications and services.
Friend is an authentication and authorization library designed for Clojure Ring web applications. It provides a flexible framework for handling user logins, role-based permissions, and session management, aiming to simplify the security concerns common in web development. The library supports multiple authentication workflows and integrates seamlessly with Ring's middleware architecture.
Clojure developers building Ring-based web applications or services who need a robust, extensible solution for authentication and authorization without rolling their own security implementation.
Developers choose Friend for its purely functional design, seamless Ring integration, and extensibility—allowing custom authentication workflows while providing out-of-the-box support for common methods like form and HTTP Basic auth.
An extensible authentication and authorization library for Clojure Ring web applications and services.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports form and HTTP Basic authentication out-of-the-box and allows easy integration for custom workflows like OAuth and OpenID Connect, as highlighted in the README.
Uses Clojure's ad-hoc hierarchies to model hierarchical roles, enabling fine-grained access control through simple derive functions, making authorization intuitive.
Manages authentications, roles, and session data as persistent data structures, aligning with Ring's philosophy for easier reasoning and state management.
Provides Ring middlewares and macros to define authentication and authorization scopes, enabling DRY configuration without duplicating route setups.
Includes utilities for secure password hashing using bcrypt, with credential functions for verification, ensuring credential safety as per the README.
The library is no longer actively maintained, with the README noting it's in search of a new maintainer and suggesting alternatives, risking security vulnerabilities and lack of updates.
The README admits it's 'way too long and not well-organized,' making it difficult for new users to understand and implement the library effectively.
Known issues include configuration keys that need tidying, with fixes likely to break the existing API, causing instability and migration challenges for adopters.
As development has stalled, it may lack support for newer authentication standards and community-driven enhancements compared to active alternatives like Buddy.