我正在尝试在后台设置 Okta 登录,但当 API 调用点击 Okta 时,我收到错误 404。
我对 okta/backstage 还很陌生,但到目前为止,我已经按照 Backstage 的文档 在 app-config.yaml 中配置 okta 并在 packages/app/src/app.tsx 中添加了前端代码。我确实可以选择以访客身份登录或使用 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]} />
),
},
在本地运行后台仪表板时,我会看到以访客身份登录或使用 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}}
有人知道我做错了什么吗?
不幸的是,Backstage 文档缺少一个重要部分。 还有一个附加文件,您需要调整该文件。它位于
packages/backend/src/plugins/auth.ts
的某个地方。这里您需要调整 createPlugin
函数和提供程序,例如来自 GitHub:
github: providers.github.create({
signIn: {
resolver(_, ctx) {
const userRef = 'user:default/guest' // Must be a full entity reference
return ctx.issueToken({
claims: {
sub: userRef, // The user's own identity
ent: [userRef] // A list of identities that the user claims ownership through
}
})
}
// resolver: providers.github.resolvers.usernameMatchingUserEntityName(),
}
})
请在此处查找更多信息:https://backstage.io/docs/auth/identity-resolver/