能否通过子域登录页为多个子域应用提供Auth0身份认证?
单Auth0登录子域为多子域应用提供认证服务的可行性解答
完全可以实现用login.xyz.com作为dev.xyz.com、staging.xyz.com、production.xyz.com的统一认证页面,核心是做好Auth0平台的几项关键配置:
1. 为每个子域应用配置Auth0应用条目
- 给
dev.xyz.com、staging.xyz.com、production.xyz.com分别在Auth0里创建独立的应用(按环境隔离更安全,也便于单独调整配置) - 每个应用的允许回调URL、允许注销URL、允许Web Origins都要填对应子域的地址:比如dev应用的回调URL设为
https://dev.xyz.com/auth/callback,staging对应https://staging.xyz.com/auth/callback,以此类推 - 所有应用的令牌颁发者(Issuer)统一指向你的Auth0租户域名(比如
https://your-tenant-id.auth0.com/)
2. 设置跨子域共享的Cookie域
- 登录Auth0租户后台,进入设置页面,找到Cookie域选项,设置为
.xyz.com(注意开头的点) - 这个配置会让
login.xyz.com生成的会话Cookie被所有.xyz.com下的子域识别,实现一次登录后跨子域免重复认证的效果
3. 部署统一登录页面到login.xyz.com
- 把自定义的Auth0登录页面部署到
login.xyz.com,页面里的Auth0初始化代码只需要用你的租户信息即可,不需要针对每个子域做特殊修改 - 当某个子域应用发起认证请求时,会自动携带自身的client_id参数,登录页面会根据这个参数匹配对应的Auth0应用配置,完成认证流程
实际流程示例
- 用户访问
dev.xyz.com的需要认证的页面,应用跳转到login.xyz.com并携带dev应用的client_id等参数 - 用户在
login.xyz.com完成账号密码登录或第三方授权 - Auth0根据预设的回调URL,跳回
dev.xyz.com并颁发访问令牌、ID令牌 - 之后用户访问
staging.xyz.com时,浏览器会自动携带.xyz.com域下的Auth0会话Cookie,应用检测到有效会话后直接放行,无需再次登录
内容的提问来源于stack exchange,提问作者dinislam
相关产品推荐
相关产品推荐

