Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. jose

jose

MITErlang1.11.12

A comprehensive Erlang/Elixir library implementing JSON Object Signing and Encryption (JOSE) standards.

Visit WebsiteGitHubGitHub
336 stars120 forks0 contributors

What is jose?

JOSE is an Erlang and Elixir library that implements the JSON Object Signing and Encryption (JOSE) standards, including JWT, JWS, JWE, and JWK. It provides tools for creating, signing, encrypting, and verifying JSON-based tokens and keys, enabling secure authentication and data exchange in distributed systems.

Target Audience

Erlang and Elixir developers building secure applications that require standards-compliant JSON Web Token handling, such as authentication systems, APIs, and microservices.

Value Proposition

Developers choose JOSE for its exhaustive implementation of JOSE RFCs, support for both established and experimental algorithms, and seamless integration with Erlang/OTP and external cryptographic libraries, all while maintaining strong security defaults.

Overview

JSON Object Signing and Encryption (JOSE) for Erlang and Elixir

Use Cases

Best For

  • Implementing JWT-based authentication in Erlang or Elixir applications
  • Signing and verifying JSON Web Signatures (JWS) with multiple algorithms
  • Encrypting and decrypting JSON Web Encryption (JWE) payloads
  • Managing JSON Web Keys (JWK) from PEM files or generated in-memory
  • Building interoperable security protocols that require JOSE compliance
  • Experimenting with draft JOSE standards like ECDH-1PU and ChaCha20-based algorithms

Not Ideal For

  • Projects that only require basic JWT validation without full JOSE standards compliance, such as using simple HMAC signatures in a monolithic app
  • Teams operating in restricted environments where installing external C libraries (e.g., libsodium) is infeasible or prohibited
  • Developers seeking an out-of-the-box authentication framework; JOSE is a low-level library requiring manual integration for auth flows
  • Applications built in languages other than Erlang/Elixir where native JOSE implementations (e.g., in Node.js or Python) might offer better ecosystem integration

Pros & Cons

Pros

Comprehensive Algorithm Support

Implements a vast array of JWE, JWS, and JWK algorithms, including experimental drafts like ECDH-1PU and ChaCha20, as detailed in the ALGORITHMS.md and README listings.

Security-First Defaults

Disables the vulnerable 'none' signing algorithm by default and provides verify_strict for algorithm restriction, preventing common security pitfalls as highlighted in the README's security section.

Flexible Cryptographic Backends

Supports external libraries like libsodium and libdecaf for accelerated operations, with configurable modules to swap between pure Erlang fallbacks and faster implementations, as shown in setup examples.

Cross-OTP Compatibility

Offers pure Erlang fallbacks for algorithms unsupported by native OTP crypto, ensuring functionality across different Erlang versions, though with performance trade-offs noted in the README.

Cons

Performance Overheads with Fallbacks

Pure Erlang cryptographic implementations are explicitly labeled 'slow' in the README, forcing reliance on external libraries for production performance, which adds deployment complexity.

Complex Configuration and Dependencies

Setup requires managing JSON encoder/decoder dependencies for older OTP versions and manually selecting external crypto modules, as detailed in installation and configuration sections.

Experimental and Draft Feature Reliance

Includes support for non-standard and draft algorithms (e.g., from RFC drafts), which may lead to instability or breaking changes as specifications evolve, noted in the algorithm list.

Erlang/Elixir Ecosystem Lock-in

Tied specifically to the BEAM ecosystem with no cross-language support, limiting use in polyglot microservices where consistent JOSE handling across languages is needed.

Frequently Asked Questions

Quick Stats

Stars336
Forks120
Contributors0
Open Issues35
Last commit8 months ago
CreatedSince 2015

Tags

#elixir#digital-signature#authentication#jwt#encryption#security#erlang#cryptography#json-web-token#jose

Built With

E
Erlang
E
Elixir

Links & Resources

Website

Included in

Elixir13.1k
Auto-fetched 21 hours ago

Related Projects

poisonpoison

An incredibly fast, pure Elixir JSON library

Stars2,030
Forks214
Last commit1 year ago
jasonjason

A blazing fast JSON parser and generator in pure Elixir.

Stars1,676
Forks178
Last commit2 months ago
jokenjoken

Elixir JWT library

Stars813
Forks102
Last commit5 months ago
jsxjsx

an erlang application for consuming, producing and manipulating json. inspired by yajl

Stars699
Forks215
Last commit2 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub