AWS

AWS Cognito with JavaScript SDK

  • 브라우저용 / node.js 용으로 구분하여 사용할 수 있는데, 여기서는 브라우저용을 사용한다.
    주의: 현재 IE 10+ 이상을 지원하므로, 테스트 용도로는 브라우저 세팅을 사용했으나 추후 node.js로 바꿔서 node.js API를 호출해서 사용해야 할 것으로 예상
  1. SDK를 이 리파지토리에서 다운받는다
    • /dist/aws-cognito-sdk.min.js/dist/amazon-cognito-identity.min.js를 다운.
    • 전체 sdk가 필요하다면 <script src="https://sdk.amazonaws.com/js/aws-sdk-2.146.0.min.js"></script> 를 추가하면 된다. 여기서는 cognito만 사용할 것이므로 스킵.
  2. 원하는 페이지에 스크립트를 추가한다

    1
    2
    <script src="/js/aws-cognito-sdk.min.js"></script>
    <script src="/js/amazon-cognito-identity.min.js"></script>
  3. 기본 유저 풀 오브젝트 생성

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    AWSCognito.config.region = 'ap-northeast-2';
    var poolData = {
    UserPoolId : '유저 풀 ID',
    ClientId : '앱 ID'
    };
    var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
    var userData = {
    Username : '사용자 이메일',
    Pool : userPool
    };

================= 여기까지가 세팅 ====================

  1. 사용자 가입 시키기

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    var attributeList = [];
    var dataName = {
    Name : 'name', // 키
    Value : 'JiwonTest' // 값
    };
    var dataEmail = {
    Name : 'email',
    Value : 'test@test.com'
    };
    var dataPhoneNumber = {
    Name : 'phone_number',
    Value : '+15555555555'
    };
    var attributeName = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataName);
    var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);
    var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber);
    attributeList.push(attributeName);
    attributeList.push(attributeEmail);
    attributeList.push(attributePhoneNumber);
    userPool.signUp('유저네임', '패스워드', attributeList, null, function(err, result){
    if (err) {
    alert(err);
    return;
    }
    cognitoUser = result.user;
    // 이 cognitoUser를 이용해서 패스워드 수정, 유저 데이터 불러오기 등을 할 수 있음
    });
  2. 사용자 인증(로그인)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    var authenticationData = {
    Username : '유저네임',
    Password : '패스워드',
    };
    var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
    var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
    var userData = {
    Username : '유저네임',
    Pool : userPool
    };
    var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
    var accessToken;
    cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
    console.log('access token + ' + result.getAccessToken().getJwtToken());
    accessToken = result.getAccessToken().getJwtToken();
    console.log('idToken + ' + result.idToken.jwtToken);
    },
    onFailure: function(err) {
    console.log(err);
    },
    });
  3. 현재 세션 확인

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var cognitoUser = userPool.getCurrentUser();
    if (cognitoUser != null) {
    cognitoUser.getSession(function(err, session) {
    if (err) {
    alert(err);
    return;
    }
    console.log('session validity: ' + session.isValid());
    });
    }
  4. 현 유저의 정보 받아오기

    1
    2
    3
    4
    5
    6
    cognitoUser.getUserAttributes(function(err, result) {
    if (err) {
    console.log(err);
    return;
    }
    console.log('result: '+ result);
  5. 로그아웃

    1
    2
    3
    4
    if (cognitoUser != null) {
    cognito User.signOut();
    console.log('sign out');
    }
  6. 유저 삭제

    1
    2
    3
    4
    5
    6
    7
    cognitoUser.deleteUser(function(err, result) {
    if (err) {
    console.log(err);
    return;
    }
    console.log('call result: ' + result);
    });
  7. 패스워드 수정

    1
    2
    3
    4
    5
    6
    7
    cognitoUser.changePassword('예전 패스워드', '새 패스워드', function(err, result) {
    if (err) {
    alert(err);
    return;
    }
    console.log('call result: ' + result);
    });
Share