首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在后台启用与谷歌的登录?

如何在后台启用与谷歌的登录?
EN

Stack Overflow用户
提问于 2022-05-13 02:21:30
回答 1查看 550关注 0票数 0

在后台,按照https://backstage.io/docs/auth/google/provider上的所有步骤,在通过Google界面后,我得到了“Google未配置为支持登录”的消息。

如果我的理解正确,我必须设置后台,以启用/允许谷歌提供商登录用户。但我不知道该怎么做。

如何配置Google提供商以支持后台登录?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-18 21:00:44

似乎您错过了后端应用程序作为在文档中提到过的auth插件配置

您应该创建一个解析器函数来将google的用户标识映射到后台的用户标识,或者可以选择跳过目录的用户查找(这种方法有一些注意事项)。

以下文档解释了解析器函数和用户标识:登录标识和解析器

下面的代码是一个示例,说明如何在不映射到后台用户身份的情况下实现谷歌解析器,我建议只将其用于测试目的,只用于,而且正如前面提到的,对此方法有一些警告。我强烈建议理解文档和将外部用户标识映射到后台用户身份释放的能力。

代码语言:javascript
复制
./packages/backend/src/plugins/auth.ts

代码语言:javascript
复制
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],
              },
            });
          },
        },
      }),
    },
  });
}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72223819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档