配置Backstage Okta登录失败,请求Okta时出现404错误
问题:Backstage配置Okta登录时出现404错误(提示未知认证提供商'okta')
我正尝试在Backstage中配置Okta登录,但向Okta发起API请求时出现404错误。我是Okta/Backstage新手,目前已按照Backstage文档在app-config.local.yaml中配置Okta,并在packages/app/src/app.tsx中添加了前端代码。运行yarn dev后,我可以选择访客登录或Okta登录,但点击Okta登录按钮时出现错误。
我的app-config.local.yaml配置
auth: providers: okta: development: clientId: 'myClientId' clientSecret: 'myClientSecret' audience: 'myOktaDomain'
我的packages/app/src/app.tsx前端代码
const oktaProvider: SignInProviderConfig = { id: 'okta-auth-provider', title: 'Okta', message: 'Sign in using Okta', apiRef: oktaAuthApiRef, }; components: { SignInPage: props => ( <SignInPage {...props} auto providers={['guest', oktaProvider]} /> ), },
错误详情
本地运行Backstage仪表板时,出现访客登录和Okta登录选项。点击Okta登录后,查看URL发现请求了Okta的/authorize/v1端点,但收到以下错误:
{"error":{"name":"NotFoundError","message":"Unknown auth provider 'okta'","stack":"NotFoundError: Unknown auth provider 'okta'\n at (redacted)","request":{"method":"GET","url":"/api/auth/okta/dev-20224355.okta.com/oauth2/v1/authorize?response_type=code&redirect_uri=http%3%2F%2Flocalhost%3A7007%2Fapi%2Fauth%2Fokta%2Fhandler%2Fframe&scope=openid%20email%20profile%20offline_access&state=6e6f6e63653d2532467a5a4e736e3373306c33676d4868346c576a786f4125334425334426656e763d646576656c6f706d656e74266f726967696e3d687474702533412532462532466c6f63616c686f7374253313330303026666c6f773d706f707570&client_id=0oaeezrsapoH0Idj5d7"},"response":{"statusCode":404}}
解决方案
1. 后端未启用Okta认证提供商(核心问题)
你仅配置了前端和app-config,但漏掉了后端的插件安装与注册步骤:
- 安装Okta认证插件:
yarn add --cwd packages/backend @backstage/plugin-auth-backend-module-okta-provider
- 注册Okta提供商到后端:
编辑packages/backend/src/plugins/auth.ts,添加以下代码:
import { oktaAuthenticator } from '@backstage/plugin-auth-backend-module-okta-provider'; export default async function createPlugin(env: PluginEnvironment) { const builder = await createAuthProviderFactory({ env, providers: [ // 保留其他已有的提供商 oktaAuthenticator, // 添加这一行注册Okta ], }); return await builder.build(); }
2. 修正app-config中的audience字段
Okta的audience需要是完整的授权服务器URL,而非仅域名,默认格式为https://{你的Okta域名}/oauth2/default。修改后的配置:
auth: providers: okta: development: clientId: 'myClientId' clientSecret: 'myClientSecret' audience: 'https://dev-20224355.okta.com/oauth2/default'
3. 重启服务
执行yarn dev重启Backstage后端服务,再尝试Okta登录即可。
内容的提问来源于stack exchange,提问作者KingNerdy
相关产品推荐
相关产品推荐

