@ askrjs/ auth (英语)
Askr 拥有框架,域中立认证原始. Server会话需要节点.js 24或更新. 低级的OIDC和密码客户端条目保留了它们明显的Web Crypto/Fetch或Census API边界.
特性矩阵
| 条目 | 拥有 | 不拥有 |
|---|---|---|
@askrjs/auth | Principal,验证背景和要求,无记名/cookie/会议要求解决 | 用户、组织、证书存储、密码散列 |
@askrjs/auth/jwt | RS256/ES256 签发和核证、索赔、JWKS延期 | 坚守或撤销列表 |
@askrjs/auth/oidc | 发现 授权码 PKCE 调用关联 核实的ID -token -Principal 交换 | 提供者 UI, 账户连接, 刷新存储 |
@askrjs/auth/server | 服务器拥有的提供者交易、封存会话 cookie、刷新家庭和应用程序钩 | 应用程序用户/政策和HTTP适配器所有权 |
@askrjs/auth/providers/auth0 | 本地 Auth0 提供者政策和 API 受众 | 浏览器 SDK 和应用路径 |
@askrjs/auth/providers/microsoft | 租户捆绑的微软供应商和明确的API权限 | 多租户推论和应用路线 |
@askrjs/auth/providers/google | 谷歌供应商、主机域政策和明确的API权限 | 工作空间管理和应用路线 |
@askrjs/auth/providers/apple | 苹果网登录和每日账户检查 | API 访问控制赠款和申请途径 |
@askrjs/auth/saml | SP元数据和请求,签名/加密响应验证,请求关联 | IdP 操作, SLO, IdP 启动的 SAML, 外部 CA 信任政策 |
@askrjs/auth/mfa | TOTP和WebAuthn 注册/认证核查 | 证书存储、恢复政策、入学 |
重放预防在应用程序的持久存储界限内。 SAML 需要原子
requestStore.consume(). TOTP 返回已接受的计数器,以便它可以被原子标记使用.
WebAuthn 返回已核实的新签名计数器,这样它可以在解剖上被坚持.
请求认证
createAuth() 将 Bearer JWTs, JWT cookie, 和不透明的会话 cookie 解为一个认证上下文 .
无效、过期或畸形的JWT始终被视为未经认证和解决
继续到下一个配置的证书源。 租户、本金、,
或会话存储仍然拒绝 resolve() 因此,呼叫者可以处理不可用的依赖.
伊办
exchangeCode() 接受回调和存储的授权请求。 它检查
状态在网络访问之前,然后验证所需的 ID 令牌,以防发现和 JWKS 前
返回时 { tokens, principal }。只需要识别该客户端;任何明确的
azp 必须匹配配置的客户端ID。 额外的观众信任不属于此客户端配置.
OIDC 的入站点也在浏览器中运行, 包含 Web Crypto, Fetch, 和 UTF-8
编码支持. JWT 解码使用浏览器- 本地字节并需要 No Node
Buffer 混合填充剂。 浏览客户端省略 clientSecret; 保留授权
请求回调关联。 本条目为低等协议原始; 3;
它不会取代服务器拥有的应用程序的签名或保留会话符
浏览器。 申请会话使用 服务器合同
编辑 0.5 移徙。 。 。 .
import { createOidcClient } from "@askrjs/auth/oidc";
const client = createOidcClient({ issuer, clientId, clientSecret, redirectUri });
const request = await client.createAuthorizationRequest();
const result = await client.exchangeCode({ code: callback.code, state: callback.state, request });
供应商申请会话
配置共享 createProviderSession 引擎从 @askrjs/auth/server
与一个或多个本地供应商结合,然后将其绑定在提供者-自动模式中
@askrjs/server服务器拥有授权/召回运输,密封饼干,
刷新令牌和每笔资源令牌赠款. createSessionAuth 从
@askrjs/askr/router 将公开会话快照约束在SRS或SPA应用程序;
供应商的代号 和客户端的秘密 保持服务器侧。 见承诺
所有权/API合同 设置
自动 0, (中文(简体) ), 微软, (中文(简体) ),
谷歌 或者说 苹果公司。 。 。 .
@askrjs/auth/browser 和只开发的 @askrjs/auth/auth0 SDK 适配器
在0.5中删除。 没有替换浏览器持有的会话/ SDK 路径 .
已发布的0.4.2浏览器生命周期要求明确
服务器会话迁移。 。 。 .
外交部
import { generateTotpSecret, verifyTotpCode } from "@askrjs/auth/mfa";
const secret = generateTotpSecret();
const result = await verifyTotpCode({ secret, code });
if (result.valid) await counters.consume(result.counter); // application-owned atomic replay guard
TOTP默认为SHA-1,6位数,30秒周期,以及一阶窗口. SHA-256, SHA-512, (英语),
并且支持八位数代码。 WebAuthn 使用精确的 Base64url 挑战, 精确的来源
允许列表, 1 RP ID, 以及默认的用户验证 。 它接受ES256、RS256(RSA 2048-bit或
edDSA/Ed25519 键。 注册接受 none 并用密码验证包装
仅自证; 证书支持的证明被故意拒绝。 核查也
对客户端数据、证书身份、质疑、证明对象、,
验证器数据,以及解析或加密工作前的签名.
萨姆
只有服务器 @askrjs/auth/saml 入口提供狭义由SP启动的 SAML 2.0 流:
元数据生成, 已签名或未签名的 HTTP- Redirect Authn 请求, 已签名的断言验证,
可选的签名响应,加密断言,请求相关性,以及原子回放保护.
它有意与 createAuth() 和软件包根.
import { createSamlServiceProvider } from "@askrjs/auth/saml";
const saml = createSamlServiceProvider({
entityId: "https://app.example.com/saml/metadata",
acsUrl: "https://app.example.com/saml/acs",
idp: {
entityId: "https://idp.example.com",
ssoUrl: "https://idp.example.com/sso",
certificates: [idpCertificate],
},
requestStore, // save/get plus an atomic consume operation
});
const { url } = await saml.createAuthnRequest({ relayState: "return-to" });
const principal = await saml.validateResponse({ samlResponse, relayState: "return-to" });
请求商店是一个安全边界: consume(id) 必须解剖返回 false (单位:千美元)
缺少、过期或先前使用的身份证。 校验器默认为10分钟请求 TTL,
5分钟的确认年龄 和60秒的时钟 总是签名;
requireSignedResponse 还需要外部反应签名.
JWT发行和验证支持RS256配有RSA密钥,ES256配有EC P-256密钥. 一个JWK的
alg 可省略并从密钥形状中推断出来;当存在时,必须与密钥相匹配.
安装
npm install @askrjs/auth
0.5.0 准备
见 完整 API 决定和迁移 财务报告和审定财务报表 强化证据。浏览器密码助手仍然在 @askrjs/auth/webauthn-client; CBOR/COSE 解析和 Base64url 转换为私有. 应用程序商店保留回放、证书和政策所有权.