+2
CLAUDE.prompts.md
+2
CLAUDE.prompts.md
···
24
24
25
25
Write high level module documentation in the `path/to/file.rs` source file. Documentation should brief and specific. Think very hard about how to do this.
26
26
27
+
Write high level crate documentation in the `crates/atproto-oauth-axum/src/lib.rs` source file. Documentation should brief and specific. Think very hard about how to do this.
28
+
27
29
Update the high level module documentation in each of the source files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-client`, and `atproto-oauth-axum` crates. Documentation should brief and specific. Think very hard about how to do this.
28
30
29
31
Update the `README.md` files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-oauth-axum`, and `atproto-client` crates. Each `README.md` file should include a high level overview of what the crate provides and include a summary of each binary produced by the crate. Think very hard.
+3
crates/atproto-client/Cargo.toml
+3
crates/atproto-client/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-client"
3
3
version = "0.4.0"
4
+
description = "HTTP client for AT Protocol services with OAuth and identity integration"
4
5
readme = "README.md"
6
+
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
7
+
documentation = "https://docs.rs/atproto-client"
5
8
6
9
edition.workspace = true
7
10
rust-version.workspace = true
+3
-1
crates/atproto-identity/Cargo.toml
+3
-1
crates/atproto-identity/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-identity"
3
3
version = "0.4.0"
4
-
description = "An ATProtocol identity library"
4
+
description = "AT Protocol identity management - DID resolution, handle resolution, and cryptographic operations"
5
5
readme = "README.md"
6
+
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
7
+
documentation = "https://docs.rs/atproto-identity"
6
8
7
9
edition.workspace = true
8
10
rust-version.workspace = true
+3
crates/atproto-oauth-axum/Cargo.toml
+3
crates/atproto-oauth-axum/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-oauth-axum"
3
3
version = "0.4.0"
4
+
description = "Axum web framework integration for AT Protocol OAuth workflows"
4
5
readme = "README.md"
6
+
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
7
+
documentation = "https://docs.rs/atproto-oauth-axum"
5
8
6
9
edition.workspace = true
7
10
rust-version.workspace = true
+61
-3
crates/atproto-oauth-axum/src/lib.rs
+61
-3
crates/atproto-oauth-axum/src/lib.rs
···
1
-
//! AT Protocol OAuth Axum web handlers.
1
+
//! Axum web framework integration for AT Protocol OAuth workflows.
2
2
//!
3
-
//! Complete Axum web handlers for implementing AT Protocol OAuth 2.0 authorization server
4
-
//! endpoints including client metadata, JWKS, and authorization callback handling.
3
+
//! This crate provides complete Axum web handlers and request extractors for implementing
4
+
//! AT Protocol OAuth 2.0 client endpoints. It includes RFC-compliant client metadata serving,
5
+
//! JWKS public key distribution, and OAuth authorization callback handling.
6
+
//!
7
+
//! ## Features
8
+
//!
9
+
//! - **OAuth Client Metadata**: RFC 7591 compliant client metadata endpoint
10
+
//! - **JWKS Endpoint**: JSON Web Key Set serving for signature verification
11
+
//! - **Authorization Callbacks**: Complete OAuth authorization code flow handling
12
+
//! - **DPoP Support**: Demonstration of Proof-of-Possession token binding
13
+
//! - **Request Extractors**: Axum state management for OAuth configuration
14
+
//! - **Error Handling**: Structured error types for OAuth workflows
15
+
//!
16
+
//! ## OAuth Endpoints
17
+
//!
18
+
//! The crate provides handlers for standard OAuth 2.0 endpoints:
19
+
//!
20
+
//! - `/oauth/client-metadata.json` - OAuth client metadata (RFC 7591)
21
+
//! - `/.well-known/jwks.json` - JSON Web Key Set for public keys
22
+
//! - `/oauth/callback` - OAuth authorization callback handler
23
+
//!
24
+
//! ## CLI Tool
25
+
//!
26
+
//! The `atproto-oauth-tool` binary provides a complete OAuth client implementation:
27
+
//!
28
+
//! ```bash
29
+
//! # Start OAuth login flow
30
+
//! atproto-oauth-tool login <private_signing_key> <subject>
31
+
//!
32
+
//! # Refresh OAuth tokens
33
+
//! atproto-oauth-tool refresh <private_signing_key> <subject> <private_dpop_key> <refresh_token>
34
+
//! ```
35
+
//!
36
+
//! ## Example Integration
37
+
//!
38
+
//! ```rust,no_run
39
+
//! use axum::{routing::get, Router};
40
+
//! use atproto_oauth_axum::{
41
+
//! handle_complete::handle_oauth_callback,
42
+
//! handle_jwks::handle_oauth_jwks,
43
+
//! handler_metadata::handle_oauth_metadata,
44
+
//! state::OAuthClientConfig,
45
+
//! };
46
+
//!
47
+
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
48
+
//! let router = Router::new()
49
+
//! .route("/oauth/client-metadata.json", get(handle_oauth_metadata))
50
+
//! .route("/.well-known/jwks.json", get(handle_oauth_jwks))
51
+
//! .route("/oauth/callback", get(handle_oauth_callback));
52
+
//! // .with_state(oauth_config);
53
+
//! # Ok(())
54
+
//! # }
55
+
//! ```
56
+
//!
57
+
//! ## Dependencies
58
+
//!
59
+
//! This crate integrates with:
60
+
//! - [`atproto-oauth`]: Core OAuth workflow logic and PKCE implementation
61
+
//! - [`atproto-identity`]: AT Protocol identity resolution and key management
62
+
//! - [`axum`]: Web framework for HTTP request handling
5
63
6
64
#![warn(missing_docs)]
7
65
+5
crates/atproto-oauth/Cargo.toml
+5
crates/atproto-oauth/Cargo.toml
···
1
1
[package]
2
2
name = "atproto-oauth"
3
3
version = "0.4.0"
4
+
description = "OAuth workflow implementation for AT Protocol - PKCE, DPoP, and secure authentication flows"
5
+
readme = "README.md"
6
+
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
7
+
documentation = "https://docs.rs/atproto-oauth"
8
+
4
9
edition.workspace = true
5
10
rust-version.workspace = true
6
11
repository.workspace = true
+3
crates/atproto-record/Cargo.toml
+3
crates/atproto-record/Cargo.toml
···
2
2
name = "atproto-record"
3
3
version = "0.4.0"
4
4
description = "AT Protocol record signature operations - cryptographic signing and verification for AT Protocol records"
5
+
readme = "README.md"
6
+
homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
7
+
documentation = "https://docs.rs/atproto-record"
5
8
6
9
edition.workspace = true
7
10
rust-version.workspace = true