Hosted UI を探究する

Hosted UI とオプションについて調べてみましょう。

ユーザープール画面の「開始方法」の下にユーザープールの設定値に関するタブが表示されています。
タブの中から「アプリケーションの統合」をクリックします。(表示がない場合はタブ欄の右端についている 「>」ボタンを何度かクリックして表示項目を切り替えてください)

handson

表示項目が切り替わったら「アプリケーションクライアントのリスト」>「アプリクライアントと分析」の中から「petstore-client」をクリックします。
handson

画面が切り替わったらページを中段までスクロールし、「ホストされた UI」の「ホストされた UI を表示」ボタンをクリックします。
handson

Hosted UI が表示されます。「Sign up」をクリックし、新規ユーザーを登録しましょう。
handson

表示が切り替わったら「Email」「Password」に任意の値を入力し「Sign up」ボタンをクリックします。
handson

「Sign up」ボタンをクリックすると有効なメールアドレスか確認を行うために、「Email」欄に入力したメールアドレス宛に「Verification Code」が届きます。メールボックスに届いたCodeを確認し、「Verification Code」欄に入力します。

入力が完了したら「Confirm account」をクリックし、アカウントを登録します。
handson

今回のラボではアプリケーションをホストしていないため、コールバックURLとしてlocalhostを設定しました。
「Confirm account」をクリックすると

https\://localhost/?code=c4248548-8691-4547-9e66-06d4b64d64ee (codeの値はそれぞれ異なります)  

にリダイレクトされブラウザではエラーが表示されるはずです。
handson

次はImplicit flow sign in に変更した場合の反応を確認してみましょう。ブラウザのタブを切り替えAWSマネジメントコンソールの画面に戻ります。
handson

もう一度「ホストされた UI」の「ホストされた UI を表示」ボタンを右クリックし、リンクアドレスのコピーをしてください。
handson

https://<ユーザープールで設定したドメイン名>.auth.ap-northeast-1.amazoncognito.com/oauth2/authorize?client_id=xxxxx&response_type=code&scope=email+openid+petstore%2Fread+phone+profile&redirect_uri=https%3A%2F%2Flocalhost

テキストエディタにコピーしたリンクを貼り付けます。
https://xxxx.auth.ap-northeast-1.amazoncognito.com ドメインの後ろに /oauth2/authorize? という値があるので /login? に置き換えます。
置き換えたURLをブラウザに貼り付けます。
handson

すると前のセッションからログインされたままの状態となり、「Sign in as a different user?」というリンクが表示されるのでクリックします。
画面が切り替わったら、ブラウザのURLバーを確認してください。URLは以下のような値となっているはずです。

&response_type=code&scope=email+openid+petstore%2Fread+phone+profile&redirect_uri=https%3A%2F%2Flocalhost

URLの中で設定されているresponse_typeは「code」になっているはずなので「token」に変更し、エンターキーを押して新しいURLを読み込みます。

&response_type=token&scope=email+openid+petstore%2Fread+phone+profile&redirect_uri=https%3A%2F%2Flocalhost

すると再度ログイン画面が表示されるので、先程登録したユーザー情報を入力し、「Sign in」をクリックします。
handson

localhostでアプリケーションのホストを行っていないためエラーが表示されるはずです。
ブラウザのURLバーを確認すると以下のような値が表示されているはずです。

https://localhost/#id_token={a-large-id-token}&access_token={a-large-access-token}&expires_in=3600&token_type=Bearer