delegated, decentralized, capabilities based authorization token
Go to file
Clément Delafargue 47d7b5c474
Merge pull request #144 from biscuit-auth/cleanup-readme
Update readme & remove mentions to caveats
2023-07-05 09:10:49 +02:00
assets add a logo 2019-01-07 12:19:08 +01:00
biscuit-web-key bwk: fix JSON schema: 2023-06-28 11:13:16 +02:00
experimentations fix test code 2019-09-17 14:55:43 +02:00
samples add samples for execution overflow errors (#127) 2023-02-22 22:53:52 +01:00
DESIGN.md new cryptographic scheme 2021-09-03 18:37:09 +02:00
LICENSE add a license 2019-10-28 11:33:30 +01:00
README.md Update readme & remove mentions to caveats 2023-07-05 09:10:09 +02:00
schema.proto add a new message format for authorizer snapshots (#122) 2023-02-22 22:34:05 +01:00
SECURITY.md Add samples and advisories for vulnerabilities 0 and 1 2021-05-06 17:36:17 +02:00
SPECIFICATIONS.md Update readme & remove mentions to caveats 2023-07-05 09:10:09 +02:00
SUMMARY.md Update readme & remove mentions to caveats 2023-07-05 09:10:09 +02:00

Biscuit authentication/authorization token

Join the Matrix chat

https://www.biscuitsec.org

Goals

Biscuit is an authentication and authorization token for microservices architectures with the following properties:

  • distributed authentication: any node could validate the token only with public information;
  • offline delegation: a new, valid token can be created from another one by attenuating its rights, by its holder, without communicating with anyone;
  • capabilities based: authorization in microservices should be tied to rights related to the request, instead of relying on an identity that might not make sense to the verifier;
  • flexible rights managements: the token uses a logic language to specify attenuation and add bounds on ambient data, what it can model ranges from small rules like expiration dates, to more flexible architectures like hierarchical roles and user delegation;
  • small enough to fit anywhere (cookies, etc).

Non goals

  • This is not a new authentication protocol. Biscuit tokens can be used as opaque tokens delivered by other systems such as OAuth.
  • Revocation: Biscuit generates unique revocation identifiers for each token, and can provide expiration dates as well, but revocation requires external state management (revocation lists, databases, etc) that is outside of this specification. See the revocation guide for more information.

Roadmap

You can follow the next steps on the roadmap.

Current status:

  • the credentials language, cryptographic primitives and serialization format are done
  • we have implementations for biscuits v2 in
  • we have implementations for biscuits v1 in
    • Java (migration to v2 is in progress)
    • Go
  • a website with documentation and an interactive playground is live at https://biscuitsec.org
  • Currently deploying to real world use cases such as Apache Pulsar at Clever Cloud
  • looking for an audit of the token's design, cryptographic primitives and implementations

How to help us?

  • provide use cases that we can test the token on (some specific kind of checks, auth delegation, etc)
  • cryptographic design audit: we need reviews of algorithms, their usage and implementation in various languages
  • add support for biscuit v2 to java and go implementations

Project organisation

  • SUMMARY.md: introduction to Biscuit from a user's perspective
  • SPECIFICATIONS.md is the description of Biscuit, its format and behaviour
  • biscuit-web-key/ is a specification for publishing biscuit public keys
  • DESIGN.md holds the initial ideas about what Biscuit should be
  • experimentations/ holds initial code examples for the crypographic schemes and caveat language. code/biscuit-poc/ contains an experimental version of Biscuit, built to explore API issues

License

Licensed under Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)

logo by Mathias Adam

originally created at Clever Cloud

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.