21
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CognitoでOpenID Connect(Yahoo! ID連携)

Last updated at Posted at 2018-04-13

Cognitoとは

スクリーンショット 2018-04-13 10.12.00.png

※引用元:https://aws.amazon.com/jp/cognito

公式によるとこのような感じだそうです。
簡単に言うと「認証基盤を受け持ってくれるAWSのサービス」みたいな感じでしょうか。

詳細はクラスメソッドさんの記事に整理されているのでご覧ください。
Amazon Cognito と仲良くなるために歴史と機能を整理したし、 Cognito User Pools と API Gateway の連携も試した | Developers.IO

なぜOpenID Connect

OpenID Connectについてはこの素晴らしい記事をご覧ください。
一番分かりやすい OpenID Connect の説明 - Qiita

複数サービスを提供している企業がID共通基盤を構築しようとした時、既存ユーザーを抱えたままサービスを超えてお互いに認証したり、解析用に名寄せするにはこの選択が最良と考えました。(結果はまだわからない)

Yahoo! ID連携 v2

ひとまず自社のプロダクトをプロバイダーにする前にすでに公開されているプロバイダーでCognitoにログインしてみましょう。

こちらの記事を参考にさせていただきながら、Yahoo! ID連携 v2でCognitoにログインしてみました。
OpenID Connect体験 - Qiita

アプリケーションの登録

アプリケーションの管理:Yahoo!デベロッパーネットワーク
スクリーンショット_2018-04-13_10_46_30.png

アプリケーション名などを入力して、登録します。

スクリーンショット_2018-04-13_10_49_39.png

登録するとClient IDとシークレットが発行されます。
※認証するだけであればシークレットは必要ありません。

AWS Cognitoへ登録

CognitoでOpenID Connectを使う際には、IAMにIDプロバイダーとして登録する必要があります。

スクリーンショット_2018-04-13_11_09_23.png プロバイダーのURLに```https://auth.login.yahoo.co.jp/yconnect/v2``` 対象者にアプリケーション登録時に発行されたClient IDを入力します。 スクリーンショット_2018-04-13_11_25_34.png

登録されるとCognitoのOpenIDの項目にプロバイダーが追加されます。

ID Tokenを取得する

以下のURLをブラウザに打ち込みます。
client_idやredirect_uriは自分の環境に書き換えてください。
stateとnonceは不正アクセス対策としてサービス実装時には処理が必要ですが、今回は接続テストなので適当な値を入れました。
https://auth.login.yahoo.co.jp/yconnect/v2/authorization?response_type=code+id_token&client_id=【CLIENT_ID】&redirect_uri=http://localhost:8080&state=aaaa&scope=openid+profile&nonce=aaaa

スクリーンショット 2018-04-13 11.45.37.png こんな画面が出れば成功です。同意するとredirect_uriにリダイレクトされます。 スクリーンショット_2018-04-13_13_29_43.png

リダイレクトされた際にGETパラメータにid_token=hogehogehogeがついてくるので、このid_tokenを使ってCognitoにアクセスしてみます。

ログインしてみる

id_tokenが取れたので、いよいよCognitoにアクセスしてみようと思います。
今回はJavaScriptでやってみました。

# sdk install
install aws-sdk --save
AWS.config.region = "ap-northeast-1";
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId: "【IDENTITY_POOL_ID】",
  Logins: {
    'auth.login.yahoo.co.jp/yconnect/v2' : '【ID_TOKEN】'
  }
});

AWS.config.credentials.get(function(err) {
  console.log("Cognito Identify Id: " + AWS.config.credentials.identityId);
});
スクリーンショット_2018-04-13_13_38_55.png

無事identityIdが払い出されて、ログインできました。

参考にさせていただきました

21
22
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
21
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?