mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
Both pages are a heading and one paragraph, and the paragraphs had grown to 230 and 140 words set centred under the hero: PKCE, argon2id, refresh families, SCIM and ML-DSA-65 in one block on /iam, shards and roles on /s3. The products Lede takes `facts` now, one per line under a hairline, left-aligned on the paragraph's measure, and the paragraph says only what the product is. Every fact is the old paragraph's, reworded where a sentence had to stand alone.
41 lines
2.0 KiB
TypeScript
41 lines
2.0 KiB
TypeScript
'use client'
|
||
|
||
import { ProductFooter } from "@/components/products/ProductFooter"
|
||
import { Lede } from "@/components/products/Lede"
|
||
import { AgentPrompt } from "@/components/product/AgentPrompt"
|
||
import { Related } from "@/components/product/Related"
|
||
import { product } from '@/lib/product'
|
||
import { Box } from '@hanzo/ui'
|
||
|
||
/** The prompt's product, off the one table that holds a product's name, route,
|
||
* audited command and docs page. */
|
||
const PRODUCT = product('iam')
|
||
|
||
export default function IamPage() {
|
||
return (
|
||
<Box minH="100vh" $platform-web={{ color: 'var(--foreground)' }}>
|
||
<main>
|
||
<Lede
|
||
title="Hanzo IAM"
|
||
facts={[
|
||
'Authorization code with PKCE, always S256.',
|
||
'The passwords that do exist are argon2id digests, and a scheme IAM does not recognize fails closed.',
|
||
'Refresh tokens are single-use and kept only as a hash. Presenting a spent one revokes the whole family, so a stolen token cannot outlive its session.',
|
||
'A second factor is an authenticator app, a code by SMS or email, or a passkey. Adding or dropping one signs the account out of every other browser.',
|
||
'Sign-in arrives from Google, from GitHub or from any OIDC issuer you name, and SCIM 2.0 keeps a directory in step.',
|
||
'Tokens are signed RS256, with ML-DSA-65 available per certificate and published in the same JWKS.',
|
||
'Every organization is a tenancy boundary, and membership travels in the token.',
|
||
'What you may reach once signed in is Authz’s to decide, reading the same token.',
|
||
]}
|
||
>
|
||
The sign-in behind every Hanzo service. It speaks OpenID Connect and OAuth 2.0, so your application reads a standard
|
||
discovery document, receives a signed token and never handles a password.
|
||
</Lede>
|
||
{PRODUCT && <AgentPrompt product={PRODUCT} />}
|
||
{PRODUCT && <Related product={PRODUCT} />}
|
||
<ProductFooter slug="iam" name="IAM" />
|
||
</main>
|
||
</Box>
|
||
)
|
||
}
|