crates/nornir-identity/Cargo.toml
[package]
name = "nornir-identity"
version = "0.2.4" # RA5-29 refusal named after the signature; RA5-30 no dead link; RA5-32 ClientTrust (loopback by default); RA5-33 a used fed hash stays used
edition = "2021"
rust-version = "1.85"
authors = ["Ignalina ApS"]
description = "The identity core of the nordisk servers (IDENTITY-HOST): one `Identity<H: IdentityHost>` owns sign-up, passkey login, invites, sessions, step-up and logout for every product, over nornir-auth-webauthn's ceremony and nornir-identity-session. A product implements one small trait (site, store, roles, audit, mailer); the IdentityService gRPC proto is served the same by every product, and one conformance suite proves it."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/edda"
keywords = ["auth", "identity", "passkey", "session", "invite"]
categories = ["authentication"]
include = ["src/**", "proto/**", "build.rs", "Cargo.toml"]
[lib]
name = "nornir_identity"
[features]
default = []
# `grpc` — the IdentityService proto, compiled in pure Rust (protox, no protoc),
# and `grpc::IdentityGrpc`, the one server adapter every product mounts.
grpc = ["dep:tonic", "dep:prost", "dep:tonic-prost"]
# `test-support` — `TestHost` (an in-memory host), the soft passkey, and the
# conformance suite (`conformance::*`, `nornir_identity::conformance_suite!`) a
# product runs against its own host. Dev-only, never in a shipped closure.
test-support = ["dep:p256", "dep:sha2"]
# `sso` — company single sign-on (A34 M-4): edda nornir-identity-sso behind the core
# (its protocols, rules and memory). Off by default: the default core links none of it.
sso = ["dep:nornir-identity-sso", "nornir-identity-sso/oidc", "nornir-identity-sso/saml"]
[dependencies]
# Company SSO (`sso` only): the OIDC RP and SAML SP, the egress guard and the operator's
# switch, the per-client limits, the claim/rebind/JIT rules, DNS-proven domains and the
# refusal codes. Host-agnostic: the product's IdentityHost keeps users, roles and audit,
# its Egress the network.
nornir-identity-sso = { version = "0.1.2", path = "../nornir-identity-sso", default-features = false, optional = true }
nornir-auth-webauthn = { version = "0.2.1", path = "../nornir-auth-webauthn", default-features = false, features = ["ceremony"] }
nornir-identity-session = { version = "0.1.1", path = "../nornir-identity-session", default-features = false, features = ["session", "invites", "step-up"] }
tonic = { version = "0.14", default-features = false, features = ["codegen", "server", "transport"], optional = true }
prost = { version = "0.14", optional = true }
tonic-prost = { version = "0.14", optional = true }
p256 = { version = "0.14", features = ["ecdsa"], optional = true }
sha2 = { version = "0.11", optional = true }
[dev-dependencies]
tokio = { version = "1", features = ["macros", "rt"] }
[build-dependencies]
# Pure-Rust proto codegen; build.rs parses the proto only under `grpc`.
tonic-prost-build = { version = "0.14" }
protox = "0.9"