Amazon Cognito를 사용한 Gapwalk OAuth2 인증 구성 - AWS 메인프레임 현대화

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon Cognito를 사용한 Gapwalk OAuth2 인증 구성

이 섹션에서는 Amazon Cognito를 ID 제공업체(idP)로 사용하여 Gapwalk 애플리케이션에 대한 OAuth2 인증을 구성하는 방법에 대해 설명합니다.

사전 조건

이 자습서에서는 Amazon Cognito를 IdP로 사용하고 PlanetDemo를 현대화된 프로젝트로 사용합니다.

다른 모든 외부 ID 공급자를 사용할 수 있습니다. ClientRegistration 정보는 IdP에서 가져와야 하며 Gapwalk 인증에 필요합니다. 자세한 정보는 Amazon Cognito 개발자 안내서를 참조하세요.

ClientRegistration 정보:

client-id

ClientRegistration의 ID. 이 예제에서는 PlanetsDemo가 됩니다.

client-secret

클라이언트 암호.

인증 엔드포인트

인증 서버의 인증 엔드포인트 URI입니다.

토큰 엔드포인트

권한 부여 서버의 토큰 엔드포인트 URI.

jwks 엔드포인트

권한 부여 서버에서 발급한 JSON 웹 서명의 유효성을 검사하기 위한 키가 포함된 JSON 웹 키(JWK)를 가져오는 데 사용되는 URI입니다.

리디렉션 URI

액세스 권한이 부여된 경우 권한 부여 서버가 최종 사용자를 리디렉션하는 URI입니다.

Amazon Cognito 설정

먼저 배포된 Gapwalk 애플리케이션과 함께 테스트 목적으로 사용할 Amazon Cognito 사용자 풀과 사용자를 생성하고 구성합니다.

참고

다른 IdP를 사용할 경우 이 단계를 건너뛸 수 있습니다.

사용자 풀 생성
  1. 에서 Amazon Cognito로 이동하여 자격 AWS 증명을 사용하여 AWS Management Console 인증합니다.

  2. 사용자 풀(User Pools)을 선택합니다.

  3. 사용자 풀 생성을 선택합니다.

  4. 로그인 환경 구성에서 Cognito 사용자 풀 기본 공급자 유형을 유지합니다. Cognito 사용자 풀 로그인 옵션을 하나 또는 여러 개 선택할 수 있습니다. 지금은 사용자 이름을 선택한 후 다음을 선택합니다.

    alt_text
  5. 보안 요구 사항 구성에서 기본값을 유지하고 MFA 없음을 선택하여 다단계 인증을 비활성화하고 다음을 선택합니다.

    alt_text
  6. 보안 조치로 셀프 등록 사용을 비활성화하고 다음을 선택합니다.

    alt_text
  7. Cognito를 사용하여 이메일 전송을 선택한 다음 다음을 선택합니다.

    alt_text
  8. 앱 통합에서 사용자 풀의 이름을 선택합니다. 호스팅된 인증 페이지에서 Cognito 호스팅 UI 사용을 선택합니다.

    alt_text
  9. 단순화를 위해 도메인에서 Cognito 도메인 사용을 선택하고 도메인 접두사를 입력합니다(예: https://planetsdemo). 데모 앱을 클라이언트로 추가해야 합니다.

    1. 초기 앱 클라이언트에서 기밀 클라이언트를 선택합니다. 앱 클라이언트 이름(예: planetsdemo)을 입력하고 클라이언트 보안 암호 생성을 선택합니다.

    2. 허용된 콜백 URL에 인증 후 사용자를 리디렉션할 URL을 입력합니다. URL은 /login/oauth2/code/cognito로 끝나야 합니다. 예를 들어 애플리케이션 및 백엔드 Gapwalk 및 BAC 애플리케이션의 경우:

      http://localhost:8080/bac http://localhost:8080/bac/login/oauth2/code/cognito http://localhost:8080/gapwalk-application http://localhost:8080/gapwalk-application/login/oauth2/code/cognito http://localhost:8080/planetsdemo http://localhost:8080/planetsdemo/login/oauth2/code/cognito

      나중에 URL을 편집할 수 있습니다.

      alt_text
    3. 허용된 로그아웃 URL에 애플리케이션이 사용자를 로그아웃할 때 Amazon Cognito가 리디렉션할 로그아웃 페이지의 URL을 입력합니다. 예를 들어 백엔드 Gapwalk 및 BAC 애플리케이션의 경우:

      http://localhost:8080/bac/logout http://localhost:8080/gapwalk-application/logout http://localhost:8080/planetsdemo/logout

      나중에 URL을 편집할 수 있습니다.

    4. 고급 앱 클라이언트 설정속성 읽기 및 쓰기 권한 섹션의 기본값을 유지하세요.

    5. 다음을 선택합니다.

  10. 검토 및 생성에서 선택 사항을 확인한 다음 사용자 풀 생성을 선택합니다.

자세한 내용은 사용자 풀 생성을 참조하세요.

사용자 생성

자체 등록이 비활성화되었으므로 Amazon Cognito 사용자를 만듭니다. AWS Management Console에서 Amazon Cognito 콘솔로 이동합니다. 만든 사용자 풀을 선택한 다음 사용자에서 사용자 생성을 선택합니다.

사용자 정보에서 이메일 초대 보내기를 선택하고 사용자 이름과 이메일 주소를 입력한 다음 비밀번호 생성을 선택합니다. 사용자 생성을 선택합니다.

역할 생성

그룹 탭에서 3개의 그룹(SUPER_ADMIN, ADMIN 및 USER)을 생성하고 사용자를 이러한 그룹 중 하나 이상에 연결합니다. 이러한 역할은 나중에 Gapwalk 애플리케이션에서 ROLE_SUPER_ADMIN, ROLE_ADMIN 및 ROLE_USER에 매핑되어 일부 제한된 API REST 직접 호출에 액세스할 수 있도록 합니다.

Gapwalk 애플리케이션에 Amazon Cognito 통합

이제 Amazon Cognito 사용자 풀과 사용자가 준비되었으므로 현대화된 애플리케이션의 application-main.yml 파일로 이동하여 다음 코드를 추가합니다.

gapwalk-application.security: enabled gapwalk-application.security.identity: oauth gapwalk-application.security.issuerUri: https://cognito-idp.<region-id>.amazonaws.com/<pool-id> gapwalk-application.security.domainName: <your-cognito-domain> gapwalk-application.security.localhostWhitelistingEnabled: false spring: security: oauth2: client: registration: cognito: client-id: <client-id> client-name: <client-name> client-secret: <client-secret> provider: cognito authorization-grant-type: authorization_code scope: openid redirect-uri: "<redirect-uri>" provider: cognito: issuer-uri: ${gapwalk-application.security.issuerUri} authorization-uri: ${gapwalk-application.security.domainName}/oauth2/authorize jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json token-uri: ${gapwalk-application.security.domainName}/oauth2/token user-name-attribute: username resourceserver: jwt: jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json

다음과 같이 자리 표시자를 바꿉니다.

  1. 에서 Amazon Cognito로 이동하여 자격 AWS 증명을 사용하여 AWS Management Console 인증합니다.

  2. 사용자 풀을 선택하고 생성한 사용자 풀을 선택합니다. 사용자 풀 ID에서 pool-id를 찾을 수 있습니다.

  3. your-cognito-domain을 찾을 수 있는 앱 통합을 선택하고 앱 클라이언트 및 분석으로 이동하여 앱을 선택하세요.

  4. 앱 클라이언트: yourApp에서 client-name, client-idclient-secret(클라이언트 보안 암호 표시)을 찾을 수 있습니다.

  5. region-id는 Amazon Cognito 사용자 및 사용자 풀을 생성한 AWS 리전 ID에 해당합니다. 예시: eu-west-3.

  6. redirect-uri허용된 콜백 URL에 대해 지정한 URI를 입력합니다. 이 예제에서는 http://localhost:8080/planetsdemo/login/oauth2/code/cognito입니다.

지금 Gapwalk 애플리케이션을 배포하고 이전에 생성한 사용자를 사용하여 앱에 로그인할 수 있습니다.