18个版本
0.7.0-alpha.1 | 2022年10月4日 |
---|---|
0.6.0-alpha.1 | 2022年5月19日 |
0.5.0-alpha.6 | 2022年4月1日 |
0.5.0-alpha.5 | 2022年3月31日 |
0.1.0 | 2022年11月29日 |
#1494 in 加密学
每月377次下载
用于20个crate(14个直接使用)
105KB
2.5K SLoC
这是Rust核心UCAN实现。
请参阅https://docs.rs/ucan以获取文档。
lib.rs
:
以简洁和便捷的方式实现基于UCAN的授权!
UCANs是基于JSON Web Tokens(简称JWT)的新兴模式,用于在Web应用程序中简化分布式和/或去中心化的授权流程。访问https://ucan.xyz了解UCANs的介绍以及如何在您的应用程序中使用它们。
示例
该crate提供builder::UcanBuilder
抽象,用于生成签名的UCAN令牌。
要生成一个签名的令牌,您需要提供一个crypto::SigningKey
实现。有关提供签名键的更多信息,请参阅crypto
模块文档。
use ucan::{
builder::UcanBuilder,
crypto::KeyMaterial,
};
async fn generate_token<'a, K: KeyMaterial>(issuer_key: &'a K, audience_did: &'a str) -> Result<String, anyhow::Error> {
UcanBuilder::default()
.issued_by(issuer_key)
.for_audience(audience_did)
.with_lifetime(60)
.build()?
.sign().await?
.encode()
}
该crate还提供了解析器,用于解释UCAN令牌及其发行者/见证证明所授予的能力:chain::ProofChain
。
大多数能力都与特定应用域紧密相关。请参阅capability
模块文档,以了解更多关于定义您自己的特定域语义的信息。
use ucan::{
chain::{ProofChain, CapabilityInfo},
capability::{CapabilitySemantics, Scope, Action},
crypto::did::{DidParser, KeyConstructorSlice},
store::UcanJwtStore
};
const SUPPORTED_KEY_TYPES: &KeyConstructorSlice = &[
// You must bring your own key support
];
async fn get_capabilities<'a, Semantics, S, A, Store>(ucan_token: &'a str, semantics: &'a Semantics, store: &'a Store) -> Result<Vec<CapabilityInfo<S, A>>, anyhow::Error>
where
Semantics: CapabilitySemantics<S, A>,
S: Scope,
A: Action,
Store: UcanJwtStore
{
let mut did_parser = DidParser::new(SUPPORTED_KEY_TYPES);
Ok(ProofChain::try_from_token_string(ucan_token, &mut did_parser, store).await?
.reduce_capabilities(semantics))
}
请注意,您必须自行提供密钥支持以构建ProofChain,通过crypto::did::DidParser
。这样,核心库可以保持对特定密钥类型支持实现的无关性。
依赖项
~9–23MB
~334K SLoC