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

Auth0 인증 공급자(Auth0 Authentication Provider)

원문 보기 위키 갱신

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

출처: 문서

본문

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

Auth0 애플리케이션 만들기

  • Auth0 대시보드에 로그인합니다.

  • Applications로 이동합니다.

  • Application을 만듭니다.

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

  • Application type: Single Page Web Application

  • Settings 탭을 클릭합니다.

  • Application URIs > Allowed Callback URLs 아래에 다음을 추가합니다: http://localhost:7007/api/auth/auth0/handler/frame

  • Save Changes를 클릭합니다.

구성

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

auth:  environment: development  providers:    auth0:      development:        clientId: ${AUTH_AUTH0_CLIENT_ID}        clientSecret: ${AUTH_AUTH0_CLIENT_SECRET}        domain: ${AUTH_AUTH0_DOMAIN_ID}        audience: ${AUTH_AUTH0_AUDIENCE}        connection: ${AUTH_AUTH0_CONNECTION}        connectionScope: ${AUTH_AUTH0_CONNECTION_SCOPE}        organization: ${AUTH_AUTH0_ORGANIZATION_ID}        ## uncomment to let Auth0 determine whether to prompt the user        # prompt: auto        ## uncomme

Auth0 공급자는 다음 구성 키를 가진 구조입니다.

  • clientId: Auth0 Application 페이지에서 찾을 수 있는 Application client ID.

  • clientSecret: Auth0 Application 페이지에서 찾을 수 있는 Application client secret.

  • domain: Auth0 Application 페이지에서 찾을 수 있는 Application 도메인.

또한 작동을 위해 다음 구성에 의존합니다.

  • session.secret: 세션 시크릿은 애플리케이션이 세션 상태를 유지하기 위해 설정하는 쿠키를 서명/암호화하는 데 사용되는 키입니다. 이 경우 'your session secret'은 애플리케이션만 아는 길고 복잡하며 고유한 문자열로 대체해야 합니다.

Auth0에는 세션이 필요하므로 세션에 시크릿 키를 제공해야 합니다.

선택 사항

  • audience: 토큰의 의도된 수신자.

  • connection: 소셜 ID 공급자 이름. 사용 가능한 소셜 연결을 확인하려면 Auth0 Social Connections를 방문하세요.

  • connectionScope: 대화형 토큰 요청의 추가 scope. 항상 connection 매개변수와 함께 사용해야 합니다.

  • prompt: Auth0에 전송되는 프롬프트를 제어합니다. 매개변수를 생략하고 Auth0가 사용자에게 프롬프트할지 결정하게 하려면 이 값을 auto로 설정하세요. 다른 값은 Auth0로 그대로 전달됩니다. 기본값은 consent입니다.

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

  • organization: 로그인 흐름의 일부로 대상으로 삼을 특정 조직 ID를 지정합니다.

리졸버

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

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

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

note

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

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

백엔드 설치

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

Backstage 루트 디렉토리에서

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

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

packages/backend/src/index.ts

import { createBackend } from '@backstage/backend-defaults';//...backend.add(import('@backstage/plugin-auth-backend'));backend.add(import('@backstage/plugin-auth-backend-module-auth0-provider'));//...

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

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

더 알아보기 (Learn more)