能否借助Okta/Auth0等第三方服务无预定义用户生成OIDC ID Token?
Okta & Auth0 未被注意的功能
Auth0 匿名身份认证(Anonymous Authentication)
Auth0 支持匿名用户模式,你可以在后端通过 API 创建临时匿名用户,并为其生成包含自定义 Claims(如姓名、邮箱)的 OIDC ID Token,无需预定义用户或引导用户完成登录流程:
- 使用 Auth0 Management API 创建匿名用户,指定
name、email等属性; - 通过 Auth0 Token API 以该匿名用户身份获取 ID Token,全程无需用户交互;
- 产品 P 可直接使用 Auth0 提供的
.well-known/openid-configuration和客户端密钥验证 Token。
注意:匿名用户默认有有效期,可通过配置延长,后续也可转为正式用户(若有需要)。
Okta 相关功能局限性说明
Okta 目前没有直接生成无预存用户 ID Token 的功能,所有 ID Token 必须关联 Okta 内的用户实体。虽然 Just-In-Time (JIT) Provisioning 可自动创建用户,但仍需用户触发登录流程(如 OAuth 授权码流),无法完全通过后端程序化生成,不符合你的需求。
其他合适的第三方服务
Firebase Authentication
通过 Firebase Admin SDK,你可以在后端直接创建无密码用户(仅需邮箱、姓名),调用 createCustomToken 或 getIdToken 生成 OIDC ID Token。Firebase 提供完整的 OIDC 公共端点(包括 .well-known/openid-configuration、JWKS URI),产品 P 可直接用这些端点验证 Token,无需你搭建任何 IdP 基础设施。
AWS Cognito
使用 Cognito Admin SDK,你可以批量或单个创建无密码用户,通过 adminInitiateAuth 或相关接口获取 ID Token。Cognito 自带标准 OIDC 验证端点,满足产品 P 的验证需求,且支持自定义 Token 中的 Claims。
Ory Network(托管式 IdP)
Ory Network 提供完全托管的身份认证服务,支持通过 API 动态生成 ID Token,无需预存用户。你可以直接调用其 Token 生成接口,传入用户的姓名、邮箱等属性,即可获取符合 OIDC 标准的 Token,同时 Ory 提供所有必要的公共端点供产品 P 验证。
内容的提问来源于stack exchange,提问作者azizj

