You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Backstage自定义Auth Resolver集成Okta时缺失会话Cookie问题

Okta自定义Auth Resolver刷新页面退出问题排查与解决

问题概述

基于Okta实现自定义Auth Resolver后,登录功能正常,但刷新页面时会自动退出并跳转至登录页。此时浏览器发起的刷新请求:

GET http://localhost:7007/api/auth/okta/refresh?optional=&scope=openid email profile offline_access&env=development

返回401未授权,错误信息为:

name: "AuthenticationError", message: "Refresh failed; caused by InputError: Missing session cookie"

且该请求头未携带Cookie。

排查与解决步骤

1. 修正Session Cookie配置

在app-config.yaml的auth节点下补充session cookie的SameSite和Secure属性,确保跨端口请求能携带Cookie:

auth:
  environment: development
  providers:
    okta:
      development:
        clientId: ${AUTH_OKTA_CLIENT_ID}
        clientSecret: ${AUTH_OKTA_CLIENT_SECRET}
        audience: ${AUTH_OKTA_DOMAIN}
  session:
    cookie:
      sameSite: lax  # 开发环境跨端口场景下,lax允许GET请求携带Cookie
      secure: false  # 开发环境使用HTTP时必须设为false,生产环境HTTPS设为true

2. 对齐前后端Provider ID

前端SignInPage配置的provider ID需与后端Okta provider的ID一致,否则会导致session关联失败:

components: {
  SignInPage: props => {
    return (
      <SignInPage
        {...props}
        auto
        provider={{
          id: 'okta',  // 改为与后端一致的"okta",而非自定义的"custom-auth-resolver"
          title: 'Okta',
          message: 'Sign in using Okta',
          apiRef: oktaAuthApiRef,
        }}
        onSignInSuccess={async (identityApi: IdentityApi) => {
          props.onSignInSuccess(identityApi);
        }}
      />
    );
  },
},

3. 配置CORS允许携带凭证

若前端与后端使用不同端口,需在app-config.yaml的backend节点开启CORS凭证支持:

backend:
  cors:
    origin: http://localhost:3000  # 替换为你的前端实际地址
    credentials: true  # 允许跨域请求携带Cookie

4. 检查自定义Auth Resolver的Session处理

确认你的customAuthResolver代码中,认证成功后正确生成并返回session cookie,确保Set-Cookie响应头包含正确的参数(与app-config中的session配置一致)。

验证方法

  1. 修改配置后重启Backstage后端服务
  2. 重新登录,在浏览器开发者工具的Application > Cookies中,确认存在Backstage的session cookie,且SameSite为Lax、Secure为false(开发环境)
  3. 刷新页面,观察/api/auth/okta/refresh请求是否携带Cookie,且返回200状态码

内容的提问来源于stack exchange,提问作者Ferin Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:27:22