본문 바로가기
WIKI 기술 지식 베이스

Google 인증 공급자(Google Authentication Provider)

원문 보기 위키 갱신

Backstage core-plugin-api 패키지에는 Google OAuth를 사용해 사용자를 인증할 수 있는 Google 인증 공급자가 포함되어 있습니다.

출처: 문서

본문

Backstage core-plugin-api 패키지에는 Google OAuth를 사용해 사용자를 인증할 수 있는 Google 인증 공급자가 포함되어 있습니다.

OAuth 자격 증명 만들기

Google 인증을 지원하려면 OAuth 자격 증명을 만들어야 합니다.

  • Google Console에 로그인합니다.

  • 상단 바의 드롭다운 메뉴에서 프로젝트를 선택하거나 새 프로젝트를 만듭니다.

  • APIs & Services > Credentials로 이동합니다.

  • Create Credentials를 클릭하고 OAuth client ID를 선택합니다.

  • 필요하면 OAuth consent screen을 구성합니다.

  • 로컬 개발의 경우 Authorized domain을 입력할 필요가 없습니다.

  • scope의 경우 openid, auth/userinfo.email, auth/userinfo.profile을 선택합니다.

  • External 사용자 유형을 사용한다면 자신을 테스트 사용자로 추가합니다.

  • Application Type을 Web Application으로 설정하고 다음 설정을 사용합니다.

  • Name: Backstage(또는 커스텀 앱 이름)

  • Authorized JavaScript origins: http://localhost:3000

  • Authorized Redirect URIs: http://localhost:7007/api/auth/google/handler/frame

  • Create를 클릭합니다.

구성

공급자 구성은 루트 auth 구성 아래의 app-config.yaml에 추가할 수 있습니다.

auth:  environment: development  providers:    google:      development:        clientId: ${AUTH_GOOGLE_CLIENT_ID}        clientSecret: ${AUTH_GOOGLE_CLIENT_SECRET}        ## uncomment to set lifespan of user session        # sessionDuration: { hours: 24 } # supports `ms` library format (e.g. '24h', '2 days'), ISO duration, "human duration" as used in code        signIn:          resolvers:            # See https://backstage.io/docs/auth/google/provider#resolvers for more resolvers            -

Google 공급자는 두 개의 구성 키를 가진 구조입니다.

  • clientId: 생성한 클라이언트 ID. 예: 10023341500512-beui241gjwwkrdkr2eh7dprewj2pp1q.apps.googleusercontent.com

  • clientSecret: 생성된 클라이언트 ID에 연결된 클라이언트 시크릿.

선택 사항

  • sessionDuration: 사용자 세션의 수명.

리졸버

이 공급자는 바로 사용할 수 있는 여러 리졸버를 포함합니다.

  • emailMatchingUserEntityProfileEmail: auth 공급자의 이메일 주소를 일치하는 spec.profile.email을 가진 User 엔티티와 매칭합니다. 일치하는 항목이 없으면 NotFoundError를 던집니다.

  • emailLocalPartMatchingUserEntityName: auth 공급자의 이메일 주소의 로컬 부분을 일치하는 name을 가진 User 엔티티와 매칭합니다. 일치하는 항목이 없으면 NotFoundError를 던집니다.

  • emailMatchingUserEntityAnnotation: auth 공급자의 이메일 주소를 google.com/email 어노테이션의 값이 일치하는 User 엔티티와 매칭합니다. 일치하는 항목이 없으면 NotFoundError를 던집니다.

note

리졸버는 순서대로 시도되지만 NotFoundError를 던질 때만 건너뜁니다.

이 리졸버들이 요구 사항에 맞지 않는다면 커스텀 리졸버를 만들 수 있습니다. 이는 Sign-in Identities and Resolvers 문서의 Building Custom Resolvers 섹션에서 다룹니다.

백엔드 설치

공급자를 백엔드에 추가하려면 먼저 다음 명령을 실행해 패키지를 설치해야 합니다.

Backstage 루트 디렉토리에서

yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-google-provider

그런 다음 다음 줄을 추가해야 합니다.

packages/backend/src/index.ts에

backend.add(import('@backstage/plugin-auth-backend'));backend.add(import('@backstage/plugin-auth-backend-module-google-provider'));

공급자를 Backstage 프론트엔드에 추가하기

프론트엔드에 공급자를 추가하려면 googleAuthApiRef 참조와 SignInPage 컴포넌트를 Adding the provider to the sign-in page에 표시된 대로 추가하세요.

더 알아보기 (Learn more)