VMware Cloud 인증 제공자
Backstage에는 사용자가 자신의 VMware Cloud 계정으로 sign-in할 수 있게 하는 인증 제공자 모듈이 포함돼 있어요.
출처: 문서
본문
Backstage에는 사용자가 자신의 VMware Cloud 계정으로 sign-in할 수 있게 하는 인증 제공자 모듈이 포함돼 있어요. 이 페이지는 이 기능을 활성화하는 데 필요한 VMware Cloud Console과 Backstage 앱 내에서의 몇 가지 작업을 설명해요.
VMware Cloud Console에서 OAuth 앱 만들기
-
VMware Cloud Console에 로그인하세요.
-
Identity & Access Management > OAuth Apps로 이동해 Owned Apps 탭을 클릭하세요. -- 조직 소유자(Organization Owner)나 관리자(Administrator)가 아니라 멤버(Member)일 뿐이라면, 역할에 Developer 확인란이 선택되어 있지 않는 한 이 네비게이션 항목이 보이지 않을 거예요 (자세한 내용은 Organization roles and permissions 문서 참조).
-
Create App 클릭, 'Web/Mobile app'을 선택하고 Continue 클릭.
-
다음을 제외하고 기본 설정을 사용하세요:
-
원하는
App Name과App Description. -
Redirect URIs:${baseUrl}/api/auth/vmwareCloudServices/handler/frame여기서baseUrl은 Backstage 백엔드에 도달할 수 있는 URL이에요. VMware Cloud는http://스킴과localhost호스트명의 조합을 지원하지 않으므로, 로컬 테스트 시 백엔드 기본 URL을http://127.0.0.1:7007로 설정하는 것이 도움이 될 수 있다는 점을 유의하세요. -
Refresh Token:Issue refresh token을 확인하세요. 사용자가 브라우저를 새로고침할 때 다시 로그인하도록 강제하지 않으려면 refresh token이 필요해요. -
Define Scopes: 하단에서OpenID를 확인하세요. -
Create 클릭.
-
결과 모달의
App ID를 기록해 두세요. 이것이 Backstage가 사용할 클라이언트 ID예요.
구성
루트 auth 구성 아래의 app-config.yaml에 다음을 추가하세요:
auth: session: secret: your session secret environment: development providers: vmwareCloudServices: development: clientId: ${APP_ID} organizationId: ${ORG_ID} ## 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/vmware-cloud/provider#resolvers for more resolvers - resolver: emailMatchingUserEntityProfileEmail
여기서 APP_ID는 OAuth 앱 생성 시 가져온 ID를, ORG_ID는 sign-in을 활성화하려는 VMware Cloud의 조직의 긴 ID를 나타내요.
참고
VMware Cloud는 OAuth 앱이 authorization code 흐름을 수행할 때 PKCE를 사용해야 합니다. 이 제공자가 사용하는 라이브러리는 이를 위해 Express session 미들웨어를 사용해야 합니다. 따라서 auth.session.secret 아래의 your session secret 값은 Backstage가 설정하는 세션 쿠키 서명의 키로 작동하는 길고 복잡하며 고유한 문자열로 대체해야 합니다.
선택
sessionDuration: 사용자 세션의 수명.
Resolver
이 제공자에는 기본 제공되는 여러 resolver가 포함되어 있어요:
-
emailMatchingUserEntityProfileEmail: 인증 제공자의 이메일 주소를 일치하는spec.profile.email을 가진 User 엔터티와 매칭해요. 일치하는 항목이 없으면NotFoundError를 던져요. -
emailLocalPartMatchingUserEntityName: 인증 제공자의 이메일 주소의 로컬 부분을 일치하는name을 가진 User 엔터티와 매칭해요. 일치하는 항목이 없으면NotFoundError를 던져요.
참고
resolver는 순서대로 시도되지만, NotFoundError를 던지는 경우에만 건너뛰게 됩니다.
이 resolver가 요구에 맞지 않으면 커스텀 resolver를 만들 수 있으며, 이는 Sign-in Identities and Resolvers 문서의 Building Custom Resolvers 섹션에서 다뤄요.
백엔드 설치
제공자를 백엔드에 추가하려면 먼저 다음 명령을 실행해 패키지를 설치해야 해요:
from your Backstage root directory
yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-vmware-cloud-provider
그런 다음 이 줄을 추가해야 해요:
in packages/backend/src/index.ts
backend.add(import('@backstage/plugin-auth-backend'));backend.add( import('@backstage/plugin-auth-backend-module-vmware-cloud-provider'),);
제공자를 Backstage 프론트엔드에 추가
프론트엔드에 제공자를 추가하려면 제공자를 sign-in 페이지에 추가하기 에 표시된 대로 vmwareCloudAuthApiRef 참조와 SignInPage 컴포넌트를 추가하세요.