在后台,按照https://backstage.io/docs/auth/google/provider上的所有步骤,在通过Google界面后,我得到了“Google未配置为支持登录”的消息。
如果我的理解正确,我必须设置后台,以启用/允许谷歌提供商登录用户。但我不知道该怎么做。
如何配置Google提供商以支持后台登录?

发布于 2022-05-18 21:00:44
似乎您错过了后端应用程序作为在文档中提到过的auth插件配置
您应该创建一个解析器函数来将google的用户标识映射到后台的用户标识,或者可以选择跳过目录的用户查找(这种方法有一些注意事项)。
以下文档解释了解析器函数和用户标识:登录标识和解析器
下面的代码是一个示例,说明如何在不映射到后台用户身份的情况下实现谷歌解析器,我建议只将其用于测试目的,只用于,而且正如前面提到的,对此方法有一些警告。我强烈建议理解文档和将外部用户标识映射到后台用户身份释放的能力。
./packages/backend/src/plugins/auth.ts
import { createRouter, providers } from '@backstage/plugin-auth-backend';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
import { DEFAULT_NAMESPACE, stringifyEntityRef, } from '@backstage/catalog-model';
export default async function createPlugin(
env: PluginEnvironment,
): Promise<Router> {
return await createRouter({
...env,
providerFactories: {
google: providers.google.create({
signIn: {
resolver: async ({ profile }, ctx) => {
if (!profile.email) {
throw new Error(
'Login failed, user profile does not contain an email',
);
}
const [localPart] = profile.email.split('@');
const userEntityRef = stringifyEntityRef({
kind: 'User',
name: localPart,
namespace: DEFAULT_NAMESPACE,
});
return ctx.issueToken({
claims: {
sub: userEntityRef,
ent: [userEntityRef],
},
});
},
},
}),
},
});
}
https://stackoverflow.com/questions/72223819
复制相似问题