2024-11-12 16:58:17 +01:00
<div align="center">
2026-01-08 15:45:55 -05:00
<a href="https://code.sonr.org/go/ucan" target="_blank">
2024-11-12 17:44:28 +01:00
<img src="https://raw.githubusercontent.com/ucan-wg/go-ucan/v1/assets/logo.png" alt="go-ucan Logo" height="250"></img>
2024-11-12 16:58:17 +01:00
</a>
<h1 align="center">go-ucan</h1>
<p>
2024-11-12 17:44:28 +01:00
<img src="https://img.shields.io/badge/UCAN-v1.0.0--rc.1-blue" alt="UCAN v1.0.0-rc.1">
2026-01-08 15:45:55 -05:00
<a href="https://code.sonr.org/go/ucan/tags">
2024-11-12 17:44:28 +01:00
<img alt="GitHub Tag" src="https://img.shields.io/github/v/tag/ucan-wg/go-ucan">
2024-11-12 16:58:17 +01:00
</a>
2026-01-08 15:45:55 -05:00
<a href="https://code.sonr.org/go/ucan/actions?query=">
<img src="https://code.sonr.org/go/ucan/actions/workflows/gotest.yml/badge.svg" alt="Build Status">
2024-11-12 16:58:17 +01:00
</a>
2024-11-12 17:44:28 +01:00
<a href="https://ucan-wg.github.io/go-ucan/dev/bench/">
<img alt="Go benchmarks" src="https://img.shields.io/badge/Benchmarks-go-blue">
</a>
2026-01-08 15:45:55 -05:00
<a href="https://code.sonr.org/go/ucan/blob/v1/LICENSE.md">
2025-11-02 22:02:28 +00:00
<img alt="Apache 2.0 OR MIT License" src="https://img.shields.io/badge/License-Apache--2.0_OR_MIT-green">
2024-11-12 16:58:17 +01:00
</a>
2026-01-08 15:45:55 -05:00
<a href="https://pkg.go.dev/code.sonr.org/go/ucan">
2024-11-12 16:58:17 +01:00
<img src="https://img.shields.io/badge/Docs-godoc-blue" alt="Docs">
</a>
<a href="https://discord.gg/JSyFG6XgVM">
<img src="https://img.shields.io/static/v1?label=Discord&message=join%20us!&color=mediumslateblue" alt="Discord">
</a>
</p>
</div>
This is a go library to help the next generation of web and decentralized applications make use
of UCANs in their authorization flows.
2024-11-12 17:44:28 +01:00
User Controlled Authorization Networks (UCANs) are a way of doing authorization where users are fully in control. OAuth is designed for a centralized world, UCAN is the distributed user controlled version.
## Resources
### Specifications
2024-11-12 16:58:17 +01:00
The UCAN specification is separated in multiple sub-spec:
- [Main specification ](https://github.com/ucan-wg/spec )
- [Delegation ](https://github.com/ucan-wg/delegation/tree/v1_ipld )
- [Invocation ](https://github.com/ucan-wg/invocation )
2025-10-29 15:48:15 +01:00
- [Container ](https://github.com/ucan-wg/container )
2024-11-12 16:58:17 +01:00
Not implemented yet:
- [Revocation ](https://github.com/ucan-wg/revocation/tree/first-draft )
- [Promise ](https://github.com/ucan-wg/promise/tree/v1-rc1 )
2024-11-12 17:44:28 +01:00
### Talks
- [Decentralizing Auth, and UCAN Too - Brooklyn Zelenka (2023) ](https://www.youtube.com/watch?v=MuHfrqw9gQA )
- [What's New in UCAN 1.0 - Brooklyn Zelenka (2024) ](https://www.youtube.com/watch?v=-uohQzZcwF4 )
2024-11-12 16:58:17 +01:00
## Status
2026-01-08 15:45:55 -05:00
`go-ucan` currently support the required parts of the UCAN specification: the main specification, delegation and invocation. It leverages the sibling project [`go-did-it` ](https://code.sonr.org/go/did-it ) for easy and extensible DID support.
2024-11-12 16:58:17 +01:00
Besides that, `go-ucan` also includes:
2024-11-12 17:44:28 +01:00
- support for encrypted values in token's metadata
2024-11-12 16:58:17 +01:00
## Getting Help
For usage questions, usecases, or issues reach out to us in our `go-ucan`
[Discord channel ](https://discord.gg/3EHEQ6M8BC ).
We would be happy to try to answer your question or try opening a new issue on
Github.
2024-11-12 17:44:28 +01:00
## UCAN Gopher
Artwork by [Bruno Monts ](https://www.instagram.com/bruno_monts ). Thank you [Renee French ](http://reneefrench.blogspot.com/ ) for creating the [Go Gopher ](https://blog.golang.org/gopher )
2024-11-12 16:58:17 +01:00
## License
2026-01-08 15:45:55 -05:00
This project is licensed under the dual license [Apache 2.0 OR MIT ](https://code.sonr.org/go/ucan/blob/v1/LICENSE.md ).