Google Identity-Aware Proxy 공급자
Backstage는 사용자 인증의 책임을 Google HTTPS Load Balancer & IAP에 위임할 수 있게 해주며, 후자의 인증 지원을 활용합니다.
출처: 문서
본문
Backstage는 사용자 인증의 책임을 Google HTTPS Load Balancer & IAP에 위임할 수 있게 해주며, 후자의 인증 지원을 활용합니다.
이 튜토리얼은 Backstage 앞에 있는 IAP에서 인증을 사용하는 방법을 보여줍니다.
IAP가 이미 프론트엔드 앱을 백엔드에서 서빙하도록 구성된 Backstage 인스턴스 앞에서 트래픽을 서빙하고 있다고 가정합니다.
구성
app-config.yaml 또는 app-config.production.yaml 등에 다음 auth 구성을 추가하는 것으로 시작해 보겠습니다.
auth: providers: gcpIap: audience: '/projects/<project number>/global/backendServices/<backend service id>' jwtHeader: x-custom-header # Optional: Only if you are using a custom header for the IAP JWT signIn: resolvers: # See https://backstage.io/docs/auth/google/gcp-iap-auth#resolvers for more resolvers - resolver: emailMatchingUserEntityAnnotation
전체 audience 값은 Identity-Aware Proxy Google Cloud 콘솔을 방문해 프로젝트를 선택하고, 프록시할 Backend Service를 찾은 다음 세로 점 3개를 클릭하고 "Get JWT Audience Code"를 선택해 결과 팝업에서 복사하면 얻을 수 있습니다. 아래와 비슷해 보입니다.
이 구성 섹션은 공급자가 전혀 로드되기 위해 있어야 합니다. 이제 공급자 자체를 추가해 보겠습니다.
리졸버
이 공급자는 바로 사용할 수 있는 여러 리졸버를 포함합니다.
-
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-gcp-iap-provider
그런 다음 다음 줄을 추가해야 합니다.
packages/backend/src/index.ts에
backend.add(import('@backstage/plugin-auth-backend'));backend.add(import('@backstage/plugin-auth-backend-module-gcp-iap-provider'));
공급자를 Backstage 프론트엔드에 추가하기
로그인 페이지를 설정하고 로컬 개발에서도 원활히 작동하도록 하는 방법에 대한 안내는 Sign-In with Proxy Providers를 참조하세요. 공급자 이름으로 gcpIap를 사용하게 됩니다.
커스텀 로그인 리졸버를 제공한다면 signIn 블록을 완전히 건너뛸 수 있습니다.