🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

5406閲覧

cognitoのアクセストークンからグループ情報を取得したい

Fur0

総合スコア48

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/12/05 09:15

編集2020/12/06 10:45

前提・実現したいこと

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/ツールのバージョンなど)

Cognitoユーザーアカウントのグループにアクセスするにはどうすればよいですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

暗号化ではなくBase64エンコードされていました。
デコードすることで解決しました。

投稿2021/02/06 05:40

Fur0

総合スコア48

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問