[日本語Alexa] Cognito User Pool によるアカウントリンク

Amazon Alexa(以下、Alexa)のスキルには、アカウントリンクという機能があり、認可を得て他のサービスの機能を利用する仕組みがあります。 今回は、Amazon Cognito(以下、Cognito)のユーザープールを使用したアカウントリンクを紹介させて頂きます。
2018.05.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

Amazon Alexa(以下、Alexa)のスキルには、アカウントリンクという機能があり、認可を得て他のサービスの機能を利用する仕組みがあります。

アカウントリンクについては、過去にも幾つか記事を投稿させていただきました。
[日本語Alexa] 本日から利用可能になった新しいコンソールでアカウントリンクを設定してみました
[日本語Alexa] APIGatewayをプロキシーとして設定し、アカウントリンクをデバッグする
[Alexa] Login with Amazon との Account Linking で名前を呼びかける挨拶とかメールを送信するスキルを作ってみました
[Alexa] Account Linking を使用してスキルからFacebookに投稿してみました
[Alexa] LINEログインでAccount Linkingしてみた
[Alexa] Microsoft Graph にアカウントリンクしてみました 〜AlexaでOffice 365を操作するために〜
Alexa for Business プライベートスキルでアカウントリンクをやってみました #reinvent #Alexa

今回は、Amazon Cognito(以下、Cognito)のユーザープールを使用したアカウントリンクを紹介させて頂きます。

作業の手順は、概ね以下のとおりです。

  • ユーザープールの作成・設定 (Cognito)
    • ユーザープールの作成
    • アプリクライアントの作成
    • ドメインの作成
    • アプリクライアントの設定
  • アカウントリンクの設定 (スキル)

2 ユーザープールの作成・設定

作業は、AWSコンソールを開いてCoginitoユーザープールの管理から行います。

(1) ユーザープールの作成

プール名を指定して、プールの作成を行います。今回は、デフォルトの設定をそのまま使用しました。

(2) アプリクライアントの作成

続いて、アクセスを許可するアプリクライアント作成します。

作成が終わると、アプリクライントIDアプリクライアントのシークレット が作成されます。この2つは、スキルのアカウントリンクの設定で使用するのでコピーしておきます。

(3) ドメインの作成

Cognitoのアプリクライントでは、ユーザープールごとに認証及びトークンのエンドポイントが専用に用意されます。このため、ユーザープールにドメインを設定する必要があります。

メニューから ドメイン名 を選択して、ドメイン名を指定します。

(4) アプリクライアントの設定

最後に、アプリクライントの設定で下記の設定を行います。

  • 有効なIDプロパイダ Cognito User Pool
  • コールバックURL スキルのアカウントリンクの設定ページで表示されるもの
  • サインアウトURL とりあえず、https://alexa.amazon.co.jpを指定しました
  • 許可されているOAuthフロー Authorization code grant (スキルの設定と整合させます)
  • 許可されているOAuthスコープ aws.cognito.signin.user.admin のみとしました

3 アカウントリンクの設定

スキルのアカウントリンクの設定を有効にし、下記の項目を設定します。

  • Authorization Grant種別 Auth Code Grant (アプリの設定と整合させます)
  • 認証画面のURL https://ユーザープールドメイン名/oauth2/authorize
  • アクセストークンURL https://ユーザープールドメイン名/oauth2/token
  • クライアントID アプリの アプリクライントID (先にコピーしたもの)
  • クライアントシークレットID アプリのシークレット (先にコピーしたもの)
  • クライアントの認可方式 HTTP Basic認証(推奨)
  • スコープ aws.cognito.signin.user.admin (アプリで許可されたもの)

4 ユーザーの作成

アカウントリンクの動作確認のためにユーザーを作成します。

ユーザとグループ から ユーザーの作成 を行います。

5 動作確認

それでは、動作を確認してみます。Alexaアプリから作成したスキルを選択し、「有効にする」をクリックします。

Cognitoに認証画面が表示されますので、作成したユーザーの名前とパスワードを入力します。

「正常にリンクされました」が表示されたら成功です。

6 最後に

今回は、Cognitoのユーザープールを使用したアカウントリンクを試してみました。

Cognitoのユーザープールを使用すると、ユーザーデータを自由に作成することが出来ます。ユーザーを識別し、その情報を利用するようなスキルを作成する場合は、選択の一つになると思います。

7 参考リンク


Alexaユーザーとシステムユーザーを関連付ける
Amazon Cognito の Auth API リファレンス
[日本語Alexa] 本日から利用可能になった新しいコンソールでアカウントリンクを設定してみました
[日本語Alexa] APIGatewayをプロキシーとして設定し、アカウントリンクをデバッグする
[Alexa] Login with Amazon との Account Linking で名前を呼びかける挨拶とかメールを送信するスキルを作ってみました
[Alexa] Account Linking を使用してスキルからFacebookに投稿してみました
[Alexa] LINEログインでAccount Linkingしてみた
[Alexa] Microsoft Graph にアカウントリンクしてみました 〜AlexaでOffice 365を操作するために〜
Alexa for Business プライベートスキルでアカウントリンクをやってみました #reinvent #Alexa