前提・実現したいこと
cognitoで権限ごとのグループを作成してユーザをグループに追加後、JavaScriptのSDKを使用して、認証後にcognitoから受け取るアクセストークンから「cognito:groups」配列クレームを取得したいです(その値に応じて画面閲覧権限をチェックするため)。
発生している問題・エラーメッセージ
アクセストークンから「cognito:groups」配列クレームを取得する方法がわかりません。
→技術的には可能であることは以下のサイトで分かっているのですが、その具体的な方法がわからないため、コードが一切書けず手が止まっています。
試したこと
アクセストークンは取得できましたが、エンコード(暗号化?)されているため、わかりませんでした。
HTML
1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>Sign In</title> 6<script src="/js/jsbn.js"></script> 7<script src="/js/jsbn2.js"></script> 8<script src="/js/sjcl.js"></script> 9<script src="/js/aws-sdk.min.js"></script> 10<script src="/js/aws-cognito-sdk.min.js"></script> 11<script src="/js/amazon-cognito-identity.min.js"></script> 12<script src="/js/jquery-3.5.1.js"></script> 13<script src="/js/signin.js"></script> 14 15</head> 16<body> 17 18 <div id="signin"> 19 <h1>Sign In</h1> 20 <div id="message"><span style="color: red;"></span></div> 21 <form name="form-signin"> 22 <span style="display: inline-block; width: 150px;">Email Address</span> 23 <input type="text" id="email" placeholder="Email Address"> 24 <br/> 25 <span style="display: inline-block; width: 150px;">Password</span> 26 <input type="password" id="password" placeholder="Password"> 27 <br/><br/> 28 <input type="button" id="signinButton" value="Sign In"> 29 </form> 30 </div> 31</body> 32</html>
JavaScript
1// signin.js 2// ユーザープールの設定 3const poolData = { 4 UserPoolId : 'プールID', 5 ClientId : 'クライアントID' 6}; 7const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData); 8 9/** 10 * 画面読み込み時の処理 11 */ 12$(document).ready(function() { 13 14 // Amazon Cognito 認証情報プロバイダーの初期化 15 AWSCognito.config.region = 'ap-northeast-1'; // リージョン 16 AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({ 17 IdentityPoolId: 'アイデンティティID' 18 }); 19 20 // 「Sign In」ボタン押下時 21 $("#signinButton").click(function(event) { 22 signIn(); 23 }); 24}); 25 26/** 27 * サインイン処理 28 */ 29var signIn = function() { 30 var email = $('#email').val(); 31 var password = $('#password').val(); 32 33 // 何か1つでも未入力の項目がある場合、メッセージを表示して処理を中断 34 if (!email | !password) { 35 $("#signin div#message span").empty(); 36 $("#signin div#message span").append("All fields are required."); 37 return false; 38 } 39 40 // 認証データの作成 41 var authenticationData = { 42 Username: email, 43 Password: password 44 }; 45 var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData); 46 47 var userData = { 48 Username: email, 49 Pool: userPool 50 }; 51 var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData); 52 53 // 認証処理 54 cognitoUser.authenticateUser(authenticationDetails, { 55 onSuccess: function (result) { 56 var idToken = result.getIdToken().getJwtToken(); // IDトークン 57 var accessToken = result.getAccessToken().getJwtToken(); // アクセストークン 58 var refreshToken = result.getRefreshToken().getToken(); // 更新トークン 59 60 console.log("idToken : " + idToken); 61 console.log("accessToken : " + accessToken); 62 console.log("refreshToken : " + refreshToken); 63 64 // サインイン成功の場合、次の画面へ遷移 65 window.location.href = '/menu.html'; 66 }, 67 68 onFailure: function(err) { 69 // サインイン失敗の場合、エラーメッセージを画面に表示 70 console.log(err); 71 $("div#message span").empty(); 72 $("div#message span").append(err.message); 73 } 74 }); 75};
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。