簡體   English   中英

如何在 Backstage 上啟用 Google 登錄?

[英]How to enable sign-in with Google on Backstage?

在 Backstage 上,按照https://backstage.io/docs/auth/google/provider上的所有步驟操作后,通過 Google SSO 界面后,我收到消息“Google 提供程序未配置為支持登錄”。

如果我理解正確,我必須設置 Backstage 以啟用/允許 Google 提供商登錄用戶。 但我不知道如何做到這一點。

如何配置 Google 提供商以支持在 Backstage 上登錄?

在此處輸入圖像描述

您似乎錯過了文檔中提到的后端應用程序的身份驗證插件配置

您應該創建一個解析器函數來將 google 的用戶身份映射到后台的用戶身份,或者可以選擇跳過目錄的用戶查找(這種方法有一些注意事項)。

以下文檔解釋了解析器功能和用戶身份:登錄身份和解析器

以下代碼是一個示例,說明如何在不映射到后台用戶身份的情況下實現 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], }, }); }, }, }), }, }); }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM