Okta 인증 제공자
Backstage core-plugin-api 패키지에는 Okta OpenID Connect로 사용자를 인증할 수 있는 Okta 인증 제공자가 포함돼 있어요.
출처: 문서
본문
Backstage core-plugin-api 패키지에는 Okta OpenID Connect로 사용자를 인증할 수 있는 Okta 인증 제공자가 포함돼 있어요.
Okta에서 애플리케이션 만들기
Okta 인증을 추가하려면 Okta에서 애플리케이션을 만들어야 해요:
-
Okta에 로그인하세요 (일반적으로 company.okta.com)
-
Menu >> Applications >> Applications >>
Create App Integration으로 이동하세요. -
Create a new app integration 양식을 작성하세요:
-
Sign-in method:OIDC - OpenID Connect -
Application type:Web Application -
Next 클릭
-
New Web App Integration 양식을 작성하세요:
-
App integration name:Backstage(또는 커스텀 앱 이름) -
Grant type:Authorization Code&Refresh Token -
Sign-in redirect URIs:http://localhost:7007/api/auth/okta/handler/frame -
Sign-out redirect URIs:http://localhost:7007 -
Controlled access: (적절하게 선택) -
Save 클릭
위에서 제공된 구성 예시는 로컬 개발에 적합해요. 프로덕션 배포의 경우 http://localhost:7007을 Backstage 인스턴스가 접근 가능한 URL로 대체하세요.
구성
그런 다음 제공자 구성을 루트 auth 구성 아래의 app-config.yaml에 추가할 수 있어요:
auth: environment: development providers: okta: development: clientId: ${AUTH_OKTA_CLIENT_ID} clientSecret: ${AUTH_OKTA_CLIENT_SECRET} audience: ${AUTH_OKTA_DOMAIN} authServerId: ${AUTH_OKTA_AUTH_SERVER_ID} # Optional idp: ${AUTH_OKTA_IDP} # Optional ## uncomment to set lifespan of user session # sessionDuration: { hours: 24 } # Optional: supports `ms` library format (e.g. '24h', '2 days'), ISO duration, "human duration" as used in code # https://developer.okta.com/docs/reference/api/oidc/#scope-dependent-claims-not-always-returned additionalScopes: ${AUTH_OKTA_ADDITIONAL_SCOPES} # Optional signIn: resolvers: # See https://backstage.io/docs/auth/okta/provider#resolvers for more resolvers - resolver: emailMatchingUserEntityAnnotation
참조된 값은 Okta 사이트의 애플리케이션 페이지에서 찾을 수 있어요.
-
clientId: Okta에서 생성한 클라이언트 ID, 예:3abe134ejxzF21HU74c1 -
clientSecret: 애플리케이션에 표시된 클라이언트 시크릿. -
audience: 애플리케이션에 표시된 Okta 도메인, 예:https://company.okta.com -
authServerId: 애플리케이션의 인증 서버 ID -
idp: 애플리케이션의 ID 공급자, 예:0oaulob4BFVa4zQvt0g3 -
sessionDuration: 사용자 세션의 수명.
additionalScopes는 선택적 값으로, 공백으로 구분된 스코프 문자열이며 기본 scope 값인 openid profile email offline_access와 결합되어 OAuth 중 Okta에 보내지는 scope를 조정해요. 이는 반환되는 종속 클레임에 영향을 미쳐요. 예를 들어 additionalScopes 값을 groups로 설정하면 해당 클레임이 클라이언트 앱의 ID 토큰 그룹 필터와도 일치하는 사용자가 속한 그룹 목록을 반환하게 돼요.
Resolver
이 제공자에는 기본 제공되는 여러 resolver가 포함되어 있어요:
-
emailMatchingUserEntityProfileEmail: 인증 제공자의 이메일 주소를 일치하는spec.profile.email을 가진 User 엔터티와 매칭해요. 일치하는 항목이 없으면NotFoundError를 던져요. -
emailLocalPartMatchingUserEntityName: 인증 제공자의 이메일 주소의 로컬 부분을 일치하는name을 가진 User 엔터티와 매칭해요. 일치하는 항목이 없으면NotFoundError를 던져요. -
emailMatchingUserEntityAnnotation: 인증 제공자의 이메일 주소를okta.com/email주석 값이 일치하는 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-okta-provider
그런 다음 이 줄을 추가해야 해요:
in packages/backend/src/index.ts
backend.add(import('@backstage/plugin-auth-backend'));backend.add(import('@backstage/plugin-auth-backend-module-okta-provider'));
제공자를 Backstage 프론트엔드에 추가
프론트엔드에 제공자를 추가하려면 제공자를 sign-in 페이지에 추가하기 에 표시된 대로 oktaAuthApi 참조와 SignInPage 컴포넌트를 추가하세요.