{"id":24552008,"url":"https://github.com/mlabs-haskell/minauth","last_synced_at":"2025-03-16T13:41:39.340Z","repository":{"id":194779146,"uuid":"691186152","full_name":"mlabs-haskell/MinAuth","owner":"mlabs-haskell","description":"MinaAuth is a library and accompanying set of Typescript packages making it easy to set up authentication/authorization based on zero-knowledge proof verification. The current functionality is focused on authorizing an HTTP API access with JWT tokens granted on providing valid zero-knowledge proofs.","archived":false,"fork":false,"pushed_at":"2024-04-30T22:26:50.000Z","size":5963,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":6,"default_branch":"develop","last_synced_at":"2024-05-01T11:44:19.509Z","etag":null,"topics":["authentication","mina-protocol","o1js","passportjs","typescript","zksnarks"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlabs-haskell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-13T17:05:51.000Z","updated_at":"2024-05-06T17:33:45.270Z","dependencies_parsed_at":"2024-03-14T18:45:47.899Z","dependency_job_id":"f351c5d7-8b2d-46f9-bf25-682d740f45ac","html_url":"https://github.com/mlabs-haskell/MinAuth","commit_stats":null,"previous_names":["mlabs-haskell/minauth"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FMinAuth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FMinAuth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FMinAuth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2FMinAuth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlabs-haskell","download_url":"https://codeload.github.com/mlabs-haskell/MinAuth/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243878408,"owners_count":20362431,"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":["authentication","mina-protocol","o1js","passportjs","typescript","zksnarks"],"created_at":"2025-01-23T01:19:42.947Z","updated_at":"2025-03-16T13:41:39.296Z","avatar_url":"https://github.com/mlabs-haskell.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MinAuth: Zero-Knowledge Authorization System\n\n🚧 **DISCLAIMER: As of today MinAuth has not undergone any security audits and overall is a bit rough on edges. Use with caution.**\n\n## Introduction\nMinaAuth is a library and accompanying set of Typescript packages making it easy to set up authentication/authorization based on zero-knowledge proof verification.\nThe current functionality is focused on authorizing an HTTP API access with JWT tokens granted on providing valid zero-knowledge proofs.\nThe zero-knowledge part is provided via MINA's o1js library.\n\n## Core Components\nThis repository is organized as a monorepo containing all the system's core components.\n\n### MinAuth Library  [:link:](https://github.com/mlabs-haskell/MinAuth/tree/develop/library/minauth)\nThe library provides all the core types and interfaces that allow for cooperation between the system's elements. It has functions and utilities that help quickly set up compatible authorization plugins.  Additionally, it contains tools that may be useful when working with MinAuth, for example, a plugin HTTP server, and a compatible passport.js strategy.\n\n### MinAuth Plugins [:link:](https://github.com/mlabs-haskell/MinAuth/tree/develop/plugins)\nMinAuth features a plugin-based architecture where the main functionality of building and verifying proofs is done via plugins. It provides a couple of example plugins and various utilities for building custom ones.\nThe plugin may, but doesn't have to involve blockchains such as MINA  (the natural choice because of `o1js`).\nSince the authorization is given by a centralized authority (for example a server exposing a protected API) the proofs may regard any data that is verifiable by this authority ( blockchains, 3rd party database, trusted KYC provider's API data, trusted public keys, NFTs, etc).\nAs of today, MinAuth provides a couple of demonstrational plugins.\n\n#### Plugin starter project\n\nThere's a repository that you can clone to quickly set up your own plugin and get a bit more in-depth introduction on how to develop MinAuth plugins.\nYou can find it [https://github.com/adamczykm/minauth-plugin-starter-pack](here).\n\n### Provided plugins\n\n**A Simple Preimage Plugin** [:link:](https://github.com/mlabs-haskell/MinAuth/tree/develop/plugins/minauth-simple-preimage-plugin)\n  Probably the simplest possible plugin which functionality equals to that of a password authentication.\nThe server holds a set of Poseidon hashes assigned to roles or users. A ZKSnark that prove the knowledge of the preimage of given hash will grant the access.\n\n**Merkle Memberships Plugin** [:link:](https://github.com/mlabs-haskell/MinAuth/tree/develop/plugins/minauth-merkle-membership-plugin)\n  A simple plugin that features an amazing `o1js` feature of recursive proofs.\nServer is set up to have access to a storage of Merkle trees of secret commitments that can optionally be pinned to a MINA contract via their roots.\nThe client can prove \"membership\" into the sets represented by merkle trees, by recursively adding proof layers. Each layer accepts a merkle witness and the secret behind the commitment.\n\n**ERC721 Time-lock Plugin** [:link:](https://github.com/mlabs-haskell/MinAuth/tree/develop/plugins/minauth-erc721-timelock-plugin)\n  A plugin that demonstrates the ability to work against publicly verifiable data hosted on a blockchain. In this case Ethereum. The plugin is configured to point to a contract with a special interface that allow to time-lock an Ethereum NFT along with a secret commitment.\nThe plugin then monitors the chain and the contract state (and events) to build a merkle tree of secret commitments.\nThe prover can prove that\n\n### MinAuth Demo [:link:](https://github.com/mlabs-haskell/MinAuth/tree/develop/demo-apps)\nPart of MinAuth's value proposition is to show a way to connect these innovative technologies in a full-stack web application where all the system components are configured and set up to work together. Consider it an example of how MinAuth can be set up with JWT-based ZKP-backed authentication and a playground to test out plugins or build your own.\n\n## Usage\n\nSee this repository packages to get more information on their usage.\n\n## Contributing\nWe welcome contributions, suggestions, complains (constructive!). Please use GH issues for that.\n\n## License\nSee `LICENSE` file\n\n## Credits\n\nThe work on the library was funded by:\n* zkIgnite (https://zkignite.minaprotocol.com/)\n* MINA Navigators (https://minaprotocol.com/join-mina-navigators)\n* MLabs (https://mlabs.city/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlabs-haskell%2Fminauth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlabs-haskell%2Fminauth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlabs-haskell%2Fminauth/lists"}