oryd/kratos-selfservice-ui-node本镜像包含Ory Kratos在NodeJS/ExpressJS/Handlebars/NextJS环境中的用户界面参考实现。它完整实现了Ory Kratos的所有核心流程,包括登录、注册、账户设置、账户恢复及账户验证。
若仅需为应用添加认证功能,无需自定义登录、注册等界面,建议参考Ory Kratos快速入门。
以下环境变量用于配置Express.js服务,部分变量在本地开发(npm run start)时会由nodemon通过nodemon.json自动设置。使用Ory Network项目时,可通过ORY_SDK_URL替代KRATOS_PUBLIC_URL和HYDRA_ADMIN_URL。
ORY_SDK_URL 或 KRATOS_PUBLIC_URL(必填):Ory Kratos公共API的URL。若应用与Kratos在同一私有网络,建议使用私有网络地址(如kratos-public.svc.cluster.local)KRATOS_BROWSER_URL(可选):Kratos公共API的浏览器可访问URL,仅当与KRATOS_PUBLIC_URL不同时需要设置KRATOS_ADMIN_URL(可选):Ory Kratos管理API的URL(如[***])ORY_SDK_URL 或 HYDRA_ADMIN_URL(可选):Ory Hydra管理API的URL。若应用与Hydra在同一私有网络,建议使用私有网络地址(如hydra-admin.svc.cluster.local)COOKIE_SECRET(必填):用于签名Cookie的密钥,需至少8位字母数字字符CSRF_COOKIE_NAME(必填):CSRF Cookie名称,建议使用__HOST-example.com-x-csrf-token格式以匹配域名CSRF_COOKIE_SECRET(可选):Consent路由设置CSRF Cookie哈希值的密钥,需至少8位字母数字字符REMEMBER_CONSENT_SESSION_FOR_SECONDS(可选):设置consent请求的remember_for值(秒),默认3600秒ORY_ADMIN_API_TOKEN(可选):使用Ory Network项目时,OAuth2 Consent流程需配置此管理API令牌DANGEROUSLY_DISABLE_SECURE_CSRF_COOKIES(可选):仅本地开发无HTTPS时使用,设置CSRF Cookie为secure: false;使用时需将CSRF_COOKIE_NAME设置为不含__Host-前缀的名称TRUSTED_CLIENT_IDS(可选):可信客户端ID列表,可跳过consent界面TLS_CERT_PATH(可选):证书文件路径,需与TLS_KEY_PATH同时设置以启用HTTPSTLS_KEY_PATH(可选):密钥文件路径,需与TLS_CERT_PATH同时设置以启用HTTPS可通过以下两种方式为应用设置基础路径:
BASE_PATH环境变量为子路径(如/myapp)使用模拟数据运行,无需连接真实Kratos服务:
shellNODE_ENV=stub npm start
如需为id_token生成模拟数据,额外设置:
shellexport CONFORMITY_FAKE_CLAIMS=1
按照Ory Kratos快速入门启动Kratos:
shell# 在Kratos项目中执行 make quickstart-dev
停止Kratos默认启动的UI容器以释放端口:
shelldocker kill kratos_kratos-selfservice-ui-node_1
配置环境变量并启动应用:
shellexport KRATOS_PUBLIC_URL=[***] export PORT=4455 npm start
若修改了Ory Kratos API,需手动生成TypeScript SDK(需安装openapi-generator):
shell# 设置Kratos项目路径 export KRATOS_DIR=/path/to/kratos make build-sdk
shell# 设置Kratos项目路径 export KRATOS_DIR=/path/to/kratos make build-sdk-docker
shellmake clean-sdk
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务