Amazon Cognito 자격 증명을 사용하여 사용자를 인증합니다. - AWS SDK for JavaScript

AWS SDK for JavaScript V3 API 참조 안내서는 AWS SDK for JavaScript 버전 3 (V3) 의 모든 API 작업을 자세히 설명합니다.

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

Amazon Cognito 자격 증명을 사용하여 사용자를 인증합니다.

브라우저 스크립트용 AWS 자격 증명을 얻는 권장 방법은 Amazon Cognito ID 자격 증명 클라이언트를 사용하는 것입니다. CognitoIdentityClient Amazon Cognito를 사용하면 타사 자격 증명 공급자를 통해 사용자를 인증할 수 있습니다.

Amazon Cognito 자격 증명을 사용하려면 먼저, Amazon Cognito 콘솔에서 자격 증명 풀을 생성해야 합니다. 자격 증명 풀은 애플리케이션이 사용자에게 제공하는 자격 증명 그룹을 나타냅니다. 사용자에게 제공되는 자격 증명은 각 사용자 계정을 고유하게 식별합니다. Amazon Cognito 자격 증명(identity)은 자격 증명(credential)이 아닙니다. AWS Security Token Service ()AWS STS의 웹 자격 증명 연동 지원을 사용하여 자격 증명으로 교환됩니다.

Amazon Cognito에서는 여러 자격 증명 공급자의 자격 증명 추상화를 관리할 수 있습니다. 그러면 로드되는 자격 증명이 AWS STS의 인증 자격 증명과 교환됩니다.

Amazon Cognito 자격 증명 자격 증명 객체를 구성합니다.

아직 자격 증명 풀을 생성하지 않은 경우 Amazon Cognito 클라이언트를 구성하기 전에 Amazon Cognito 콘솔에서 브라우저 스크립트와 함께 사용할 자격 증명 풀을 생성합니다. 자격 증명 풀에 대한 인증 IAM 역할과 미인증 IAM 역할을 모두 생성하고 연결합니다. 자세한 내용은 Amazon Cognito 개발자 안내서자습서: 자격 증명 풀 생성 단원을 참조하세요.

미인증 사용자는 자격 증명이 인증되지 않았으므로 이 역할은 앱의 게스트 사용자에게 적합하거나 사용자의 자격 증명 인증 여부가 중요하지 않은 경우에 적합합니다. 인증받은 사용자는 자격 증명을 확인하는 타사 자격 증명 공급자를 통해 애플리케이션에 로그인합니다. 미인증 사용자의 액세스 권한을 허용하지 않도록 리소스 권한 범위를 충분히 정했는지 확인하세요.

자격 증명 풀을 구성한 후 @aws-sdk/credential-providers에서 fromCognitoIdentityPool 메서드를 사용하여 자격 증명 풀에서 보안 인증을 검색합니다. Amazon S3 클라이언트를 생성하는 다음 예에서는 AWS_REGION을 리전으로 바꾸고 IDENTITY_POOL_ID를 자격 증명 풀 ID로 바꿉니다.

// Import required AWS SDK clients and command for Node.js import {S3Client} from "@aws-sdk/client-s3"; import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers"; const REGION = AWS_REGION; const s3Client = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient. identityPoolId: 'IDENTITY_POOL_ID', logins: { // Optional tokens, used for authenticated login. }, }) });

선택 사항인 logins 속성은 공급자의 자격 증명 토큰에 대한 자격 증명 공급자 이름의 맵입니다. 자격 증명 공급자에게서 토큰을 받는 방법은 어떤 공급자를 사용하느냐에 따라 다릅니다. 예를 들어 Amazon Cognito 사용자 풀을 인증 공급자로 사용하는 경우 아래와 비슷한 메서드를 사용할 수 있습니다.

// Get the Amazon Cognito ID token for the user. 'getToken()' below. let idToken = getToken(); let COGNITO_ID = "COGNITO_ID"; // 'COGNITO_ID' has the format 'cognito-idp.REGION.amazonaws.com/COGNITO_USER_POOL_ID' let loginData = { [COGNITO_ID]: idToken, }; const s3Client = new S3Client({ region: REGION, credentials: fromCognitoIdentityPool({ clientConfig: { region: REGION }, // Configure the underlying CognitoIdentityClient. identityPoolId: 'IDENTITY_POOL_ID', logins: loginData }) }); // Strips the token ID from the URL after authentication. window.getToken = function () { var idtoken = window.location.href; var idtoken1 = idtoken.split("=")[1]; var idtoken2 = idtoken1.split("&")[0]; var idtoken3 = idtoken2.split("&")[0]; return idtoken3; };

인증되지 않은 사용자를 인증된 사용자로 전환

Amazon Cognito는 인증된 사용자와 인증되지 않은 사용자를 모두 지원합니다. 인증되지 않은 사용자는 자격 증명 공급자로 로그인하지 않았더라도 리소스에 대한 액세스 권한을 받습니다. 이 액세스 권한 등급은 로그인하기 전에 사용자에게 콘텐츠를 표시하는 데 유용합니다. 각 미인증 사용자는 개별적으로 로그인되지 않고 인증되지 않았더라도 Amazon Cognito에 고유한 자격 증명이 있습니다.

처음에 인증되지 않은 사용자

사용자는 일반적으로 logins 속성 없이 구성 객체의 인증 자격 증명 속성을 설정한 인증되지 않은 역할로 시작합니다. 이 경우 기본 보안 인증은 다음과 같을 수 있습니다.

// Import the required AWS SDK for JavaScript v3 modules. import {fromCognitoIdentityPool} from "@aws-sdk/credential-providers"; // Set the default credentials. const creds = fromCognitoIdentityPool({ identityPoolId: 'IDENTITY_POOL_ID', clientConfig: { region: REGION } // Configure the underlying CognitoIdentityClient. });

인증된 사용자로 전환

인증되지 않은 사용자가 자격 증명 공급자에 로그인한 상태에서 현재 사용자가 토큰을 갖고 있다면, 보안 인증 객체를 업데이트하고 logins 토큰을 추가하는 사용자 지정 함수를 호출하여 인증되지 않은 사용자를 인증된 사용자로 전환할 수 있습니다.

// Called when an identity provider has a token for a logged in user function userLoggedIn(providerName, token) { creds.params.Logins = creds.params.logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true; }