LoginSignup
0
1

More than 5 years have passed since last update.

Cognitoユーザプール認証後にIDプールと連携して一時クレデンシャルを貰う

Last updated at Posted at 2019-04-15

概要

Cognitoユーザプール認証後にIDプール(フェデレーティッドアイデンティティ)と連携して一時クレデンシャルを貰う。
Cognitoのユーザプールでの認証するところまでを最速でやる の続き。

手順

AWS SDKをダウンロードする

https://github.com/aws/aws-sdk-js/releases から、最新の browser.zip を取得する。
zip の中から aws-sdk.js を取得する。

一時クレデンシャルの取得

Cognitoのユーザプールでの認証するところまでを最速でやる で作ったjsの後に、公式 内の "ユーザープールを ID プールと統合する" に書かれているjsを追記する。

※YOUR_IDENTITY_POOL_ID、region、YOUR_USER_POOL_IDはそれぞれ自分の環境に合わせて置き換える事。
※YOUR_IDENTITY_POOL_IDの確認場所:Cognito > フェデレーティッドアイデンティティ > プールを選択 > 右上の方にある "IDプールの編集" > IDプールのIDっていうやつ(ap-northeast-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

その後、更に↓追加。

AWS.config.region = 'ap-northeast-1'; // 大事
AWS.config.credentials.get(function(){});

AWS.config.credentials の中に accesskeyId、secretAccessKey、sessionToken が入っていればOK。
また、フェデレーティッドアイデンティティ画面の "認証方法" 内のユーザプールの項目がカウントアップする。

windowsの場合、DOS窓から

set AWS_ACCESS_KEY_ID=<Access-Key-as-in-Previous-Output>
set AWS_SECRET_ACCESS_KEY=<Secret-Access-Key-as-in-Previous-Output>
set AWS_SESSION_TOKEN=<Session-Token-as-in-Previous-Output>

して、

aws sts get-caller-identity

して、IDプールの設定で、 "認証されたロール" で設定したロールの割り当てができていればOK。
参考

余談

未認証で一時クレデンシャルを取得する

AWS.CognitoIdentityCredentials() の中で Logins を指定しているが、Logins を消すと、"認証されていないロール" のロールが一時クレデンシャルとして取得できる。

Loginsに設定するtokenを出鱈目にする

Logins にユーザプール認証で取得したトークンを指定しているが、ここを出鱈目な文字列に変更すると、↓で怒られる。

message: "Invalid login token. Not a valid OpenId Connect identity token."

ユーザプールで認証する

こっち

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1