{"id":32161208,"url":"https://github.com/rvl/hsoz","last_synced_at":"2025-10-21T13:51:57.787Z","repository":{"id":62436184,"uuid":"62521955","full_name":"rvl/hsoz","owner":"rvl","description":"Oz Auth Haskell Implementation","archived":false,"fork":false,"pushed_at":"2017-03-23T00:32:49.000Z","size":435,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-13T23:37:48.444Z","etag":null,"topics":["authentication","hawk","iron"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rvl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-04T01:01:18.000Z","updated_at":"2023-03-10T17:01:56.000Z","dependencies_parsed_at":"2022-11-01T21:17:02.796Z","dependency_job_id":null,"html_url":"https://github.com/rvl/hsoz","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/rvl/hsoz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvl%2Fhsoz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvl%2Fhsoz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvl%2Fhsoz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvl%2Fhsoz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rvl","download_url":"https://codeload.github.com/rvl/hsoz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvl%2Fhsoz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280272338,"owners_count":26302260,"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","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","hawk","iron"],"created_at":"2025-10-21T13:51:55.600Z","updated_at":"2025-10-21T13:51:57.777Z","avatar_url":"https://github.com/rvl.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Oz Haskell Implementation\n\n[![Build Status](https://travis-ci.org/rvl/hsoz.svg?branch=master)](https://travis-ci.org/rvl/hsoz) [![Hackage](https://img.shields.io/hackage/v/hsoz.svg)](http://hackage.haskell.org/package/hsoz)\n\n*hsoz* is a Haskell implementation of the Iron, Hawk, and Oz web\nauthentication protocols. These protocols originate from the OAuth2\nstandardisation process, but are designed to be simpler to implement\nfor the common case of web applications.\n\n## Introduction\n\nIn the words of their principal designer:\n\n**Iron** is a cryptographic utility for sealing a JSON object using\nsymmetric key encryption with message integrity verification. Or in\nother words, it lets you encrypt an object, send it around (in\ncookies, authentication credentials, etc.), then receive it back and\ndecrypt it. The algorithm ensures that the message was not tampered\nwith, and also provides a simple mechanism for password rotation.\n\n**Hawk** is an HTTP authentication scheme using a message\nauthentication code (MAC) algorithm to provide partial HTTP request\ncryptographic verification.\n\n**Oz** is a web authorization protocol based on industry best\npractices. Oz combines the Hawk authentication protocol with the\nIron encryption protocol to provide a simple to use and secure\nsolution for granting and authenticating third-party access to an\nAPI on behalf of a user or an application.\n\n## Documentation\n\nThe Haddock documentation is on [Hackage](http://hackage.haskell.org/package/hsoz)\nand at https://rodney.id.au/docs/hsoz/.\n\n * [Network.Iron](http://hackage.haskell.org/package/hsoz/docs/Network-Iron.html)\n * [Network.Hawk](http://hackage.haskell.org/package/hsoz/docs/Network-Hawk.html)\n * [Network.Oz](http://hackage.haskell.org/package/hsoz/docs/Network-Oz.html)\n\n## Example Usage\n\nSee the [Network.Iron](http://hackage.haskell.org/package/hsoz/docs/Network-Iron.html)\ndocumentation, and the [example](./example/) directory of this\nrepository.\n\n## Status\n\nThis is an in-progress experiment in implementing the protocol in\nHaskell.\n\n * **Iron**: complete\n * **Hawk**: complete\n * **Oz**: under construction.\n * **Example web application**: under construction.\n\n*Please note*: until the example application is built, this library\ncannot be considered \"battle-tested\".\n\nThere is also an `org-mode` file: [todo.org](./todo.org?raw=1).\n\n## Development\n\nI welcome collaborators, particularly anyone who would like to develop\nauthentication plugins for frameworks such as\n[Snap](http://snapframework.com/) and\n[Servant](https://haskell-servant.github.io/), or a manager for\n[Wreq](http://www.serpentine.com/wreq/).\n\n### Building with Stack\n\n```\nstack build\n```\n\n### Building with Nix\n\n```\nnix-shell -p cabal2nix --command \"cabal2nix --shell . \u003e default.nix\"\nnix-shell --command \"cabal configure\"\ncabal build\n```\n\n## Credits\n\nThis module is based on the Javascript code and documentation by Eran\nHammer and others. A fair amount of Hammer's descriptive text has been\nincorporated into this documentation, as well as the cool logos.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frvl%2Fhsoz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frvl%2Fhsoz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frvl%2Fhsoz/lists"}