メニュー
Amazon Cognito
開発者ガイド

例: JavaScript SDK の使用

アプリケーションのユーザー登録

CognitoUserPool および UserPoolId を提供し、ユーザー名、パスワード、属性リストおよび認証データを使用して登録することにより、ClientId オブジェクトを作成する必要があります。

Copy
AWSCognito.config.region = 'us-east-1'; //This is required to derive the endpoint var poolData = { UserPoolId : 'us-east-1_TcoKGbf7n', ClientId : '4pe2usejqcdmhi0a25jp4b5sh3' }; var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); var attributeList = []; var dataEmail = { Name : 'email', Value : 'email@mydomain.com' }; var dataPhoneNumber = { Name : 'phone_number', Value : '+15555555555' }; var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail); var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber); attributeList.push(attributeEmail); attributeList.push(attributePhoneNumber); userPool.signUp('username', 'password', attributeList, null, function(err, result){ if (err) { alert(err); return; } cognitoUser = result.user; console.log('user name is ' + cognitoUser.getUsername()); });

認証されたユーザーを削除する

Copy
cognitoUser.deleteUser(function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

ローカルストレージから現在のユーザーを取得する

Copy
var data = { UserPoolId : 'us-east-1_Iqc12345', ClientId : '12345du353sm7khjj1q' }; var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(data); var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, session) { if (err) { alert(err); return; } console.log('session validity: ' + session.isValid()); }); }

ユーザーの認証

以下の例では、ユーザーの認証を行い、Amazon Cognito サービスとのユーザーセッションを確立します。

注記

ユーザーが管理者によって前述の JavaScript の例ではなくコンソールで作成された場合は、「例: Mobile SDK for Android の AdminCreateUser API を使用して作成されたユーザーの処理」および「AWS マネジメントコンソールでの Amazon Cognito User Pools API を使用した管理者としてのユーザーアカウントの作成」を参照してください。

Copy
var authenticationData = { Username : 'username', Password : 'password', }; var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData); var poolData = { UserPoolId : 'us-east-1_TcoKGbf7n', ClientId : '4pe2usejqcdmhi0a25jp4b5sh3' }; var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); var userData = { Username : 'username', Pool : userPool }; var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: function (result) { console.log('access token + ' + result.getAccessToken().getJwtToken()); /*Use the idToken for Logins Map when Federating User Pools with Cognito Identity or when passing through an Authorization Header to an API Gateway Authorizer*/ console.log('idToken + ' + result.idToken.jwtToken); }, onFailure: function(err) { alert(err); }, });

ユーザープールに対し MFA を有効にする

次の例では、認証されたユーザーへの Multi-Factor Authentication (MFA) のオプション設定があるユーザープールに対する MFA を有効にします。

Copy
cognitoUser.enableMFA(function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

ユーザープールに対し MFA を無効にする

次の例では、認証されたユーザーへの Multi-Factor Authentication (MFA) のオプション設定があるユーザープールに対する MFA を無効にします。

Copy
cognitoUser.disableMFA(function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

ユーザープールのオブジェクトを作成する

Copy
var data = { UserPoolId : 'us-east-1_q2Y6U8uuY', ClientId : '224kjog47ojnt9ov773erj7qn9' }; var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(data);

アプリケーションにサインアップする

Copy
var attribute = { Name : 'email', Value : 'email@mydomain.com' }; var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(attribute); var attributeList = []; attributeList.push(attributeEmail); var cognitoUser; userPool.signUp('username', 'password', attributeList, null, function(err, result) { if (err) { alert(err); return; } cognitoUser = result.user; });

MFA が有効な場合のサインイン

Copy
var userData = { Username : 'username', Pool : userPool }; cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); var authenticationData = { Username : 'username', Password : 'password', }; var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: function (result) { alert('authentication successful!') }, onFailure: function(err) { alert(err); }, mfaRequired: function(codeDeliveryDetails) { var verificationCode = prompt('Please input verification code' ,''); cognitoUser.sendMFACode(verificationCode, this); } });

属性の更新

次の例では、認証されたユーザーのユーザー属性を更新します。

Copy
var attributeList = []; var attribute = { Name : 'nickname', Value : 'joe' }; var attribute = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(attribute); attributeList.push(attribute); cognitoUser.updateAttributes(attributeList, function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

属性の削除

次の例では、認証されたユーザーのユーザー属性を削除します。

Copy
var attributeList = []; attributeList.push('nickname'); cognitoUser.deleteAttributes(attributeList, function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

属性の確認

次の例では、認証されたユーザーのユーザー属性を確認します。

Copy
cognitoUser.getAttributeVerificationCode('email', { onSuccess: function (result) { console.log('call result: ' + result); }, onFailure: function(err) { alert(err); }, inputVerificationCode: function() { var verificationCode = prompt('Please input verification code: ' ,''); cognitoUser.verifyAttribute('email', verificationCode, this); } });

属性の取得

次の例では、認証されたユーザーのユーザー属性を取得します。

Copy
cognitoUser.getUserAttributes(function(err, result) { if (err) { alert(err); return; } for (i = 0; i < result.length; i++) { console.log('attribute ' + result[i].getName() + ' has value ' + result[i].getValue()); } });

認証コードの再送信

次の例は、認証されていないユーザーの登録を確認する認証コードを SMS で再送信します。

Copy
cognitoUser.resendConfirmationCode(function(err, result) { if (err) { alert(err); return; } alert(result); });

登録の確認

Copy
cognitoUser.confirmRegistration('123456', true, function(err, result) { if (err) { alert(err); return; } alert(result); });

パスワードの変更

次の例では、認証されたユーザーの現在のパスワードを変更します。

Copy
cognitoUser.changePassword('oldPassword', 'newPassword', function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

パスワードを忘れた場合のフロー

次の例では、認証されていないユーザーがパスワードを忘れた場合のフローの開始から完了までです。

Copy
cognitoUser.forgotPassword({ onSuccess: function (result) { console.log('call result: ' + result); }, onFailure: function(err) { alert(err); }, inputVerificationCode() { var verificationCode = prompt('Please input verification code ' ,''); var newPassword = prompt('Enter new password ' ,''); cognitoUser.confirmPassword(verificationCode, newPassword, this); } });

ユーザーを削除する

次の例では、認証済みユーザーが削除されます。

Copy
cognitoUser.deleteUser(function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

ユーザーをサインアウトする

次の例では、アプリケーションから現在のユーザーをサインアウトします。

Copy
if (cognitoUser != null) { cognitoUser.signOut(); }

グローバルにユーザーをサインアウトする

次の例では、すべての発行されたトークンを無効にすることで、現在のユーザーをグローバルにサインアウトします。

Copy
cognitoUser.globalSignOut();

現在のユーザーを取得する

次の例では、ローカルストレージから現在のユーザーを取得します。

Copy
var data = { UserPoolId : '...', // Your user pool id here ClientId : '...' // Your client id here }; var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(data); var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, session) { if (err) { alert(err); return; } console.log('session validity: ' + session.isValid()); AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId : '...' // your identity pool id here Logins : { // Change the key below according to the specific region your user pool is in. 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>' : session.getIdToken().getJwtToken() } }); // Instantiate aws sdk service objects now that the credentials have been updated. // example: var s3 = new AWS.S3(); }); }

ユーザープールのユーザーを ID プールと統合する

次の例では、ユーザープールの現在のユーザーを指定した ID プールに統合します。

Copy
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, result) { if (result) { console.log('You are now logged in.'); // Add the User's Id Token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', Logins: { 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() } }); } }); } //call refresh method in order to authenticate user and get new temp credentials AWS.config.credentials.refresh((error) => { if (error) { console.error(error); } else { console.log('Successfully logged!'); } });

ユーザーのすべてのデバイスをリストする

次の例では、認証済みユーザーのすべてのデバイスが表示されます。この場合、一度に取得されるデバイスの数の制限を渡す必要があります。最初の呼び出しでは、ページ分割トークンは null である必要があります。最初の呼び出しは、以降のすべての呼び出しで渡される必要のあるページ分割トークンを返します。

Copy
cognitoUser.listDevices(limit, paginationToken, { onSuccess: function (result) { console.log('call result: ' + result); }, onFailure: function(err) { alert(err); } });

デバイス情報のリスト

次の例は、現在のデバイスに関する情報を一覧表示します。

Copy
cognitoUser.listDevices(limit, paginationToken, { onSuccess: function (result) { console.log('call result: ' + result); }, onFailure: function(err) { alert(err); } });

デバイスを記憶する

次の例では、デバイスを記憶します。

Copy
cognitoUser.setDeviceStatusRemembered({ onSuccess: function (result) { console.log('call result: ' + result); }, onFailure: function(err) { alert(err); } });

デバイスを記憶しない

次の例は、デバイスを記憶しないようマークします。

Copy
cognitoUser.setDeviceStatusNotRemembered({ onSuccess: function (result) { console.log('call result: ' + result); }, onFailure: function(err) { alert(err); } });

デバイスを記憶しない

次の例は、現在のデバイスの認識を失います。

Copy
cognitoUser.forgetDevice({ onSuccess: function (result) { console.log('call result: ' + result); }, onFailure: function(err) { alert(err); } });

登録済みの認証されていないユーザーを確認する

次の例では、SMS メッセージによって受信される認証コードを使用して、登録済みの認証されていないユーザーを確認します。

Copy
var poolData = { UserPoolId : 'us-east-1_TcoKGbf7n', ClientId : '4pe2usejqcdmhi0a25jp4b5sh3' }; var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); var userData = { Username : 'username', Pool : userPool }; var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); cognitoUser.confirmRegistration('123456', true, function(err, result) { if (err) { alert(err); return; } console.log('call result: ' + result); });

MFA メソッドを選択し、TOTP MFA を使用して認証する

次の例では、MFA メソッドを選択し、TOTP を使用して認証します。

Copy
var authenticationData = { Username : 'username', Password : 'password', }; var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData); var poolData = { UserPoolId : '...', // Your user pool id here ClientId : '...' // Your client id here }; var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); var userData = { Username : 'username', Pool : userPool }; var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: function (result) { console.log('access token + ' + result.getAccessToken().getJwtToken()); }, onFailure: function(err) { alert(err); }, mfaSetup: function(challengeName, challengeParameters) { cognitoUser.associateSoftwareToken(this); }, associateSecretCode : function(secretCode) { var challengeAnswer = prompt('Please input the TOTP code.' ,''); cognitoUser.verifySoftwareToken(challengeAnswer, 'My TOTP device', this); }, selectMFAType : function(challengeName, challengeParameters) { var mfaType = prompt('Please select the MFA method.', ''); cognitoUser.sendMFASelectionAnswer(mfaType, this); }, totpRequired : function(secretCode) { var challengeAnswer = prompt('Please input the TOTP code.' ,''); cognitoUser.sendMFACode(challengeAnswer, this, 'SOFTWARE_TOKEN_MFA'); } });

ユーザーの優先 MFA メソッドとして SMS MFA を有効化して設定する

次の例では、ユーザーの優先 MFA メソッドとして SMS MFA を有効化して設定します。

Copy
smsMfaSettings = { PreferredMfa : true, Enabled : true }; cognitoUser.setUserMfaPreference(smsMfaSettings, null, function(err, result) { if (err) { alert(err); } console.log('call result ' + result) });

ユーザーの優先 MFA メソッドとして TOTP ソフトウェアトークン MFA を有効化して設定する

次の例では、ユーザーの優先 MFA メソッドとして TOTP ソフトウェアトークン MFA を有効化して設定します。

Copy
totpMfaSettings = { PreferredMfa : true, Enabled : true }; cognitoUser.setUserMfaPreference(null, totpMfaSettings, function(err, result) { if (err) { alert(err); } console.log('call result ' + result) });