Alexaアカウントリンク

アカウントリンクとは

アカウントリンクを使うことで、Amazon IDを他のアカウントとリンクさせる仕組み。

たとえば、ウェブベースでユーザーがタクシーを手配できる「タクシー予約」サービスがあるとします。それを元にして「アレクサ、タクシー予約でタクシーを頼んで」とユーザーがリクエストするカスタムスキルを作成できます。 このリクエストを完了するには、スキルがタクシー予約のユーザーとしてタクシー予約サービスにアクセスし、プロファイル情報と支払い情報を取得する必要があります。つまり、Alexa搭載デバイスで使うAmazonアカウントと、ユーザーのタクシー予約アカウントとのリンクが必要ということです。

認証方式

OAuth2.0

Alexa Skills Kitでは、AlexaユーザーのAmazonアカウントとサービスの既存アカウントのリンク作成に、OAuth 2.0認証フレームワークを使用します。

認証フロー

AlexaAccountLink TokenFlow width=640

  • Resource Owner: Alexa Skillの利用者
  • Resource Server: 利用者のデータを持つサーバ(例:タクシー予約サービス)
  • Client: Alexa Skill
  • Authorization Server: OAuth2.0対応の認可サーバ(主にAuthorization code grantを使用)

認証画面のURI(Authorization URL)

アカウントリンクを開始すると認証画面のURI(Authorization URL)に移動。
認可サーバにアクセスするためのエントリーポイント。

アクセストークンのURI(Access Token URI)

認証画面のURI(Authorization URL)で認可コードを取得したら、アクセストークンのURI(Access Token URI)でアクセストークンと交換する。

Authorization ServerとしてAuth0を使う

Auth0との連携

具体的な例がInteraction-Based Authentication for Alexa Skills with Auth0にあるので参考に設定していく。

Auth0設定

  • ApplicationはApplication TypeをMachine to Machine Applicationsとして作成
  • Token Endpoint Authentication MethodをBasicにする
  • JsonWebTokenSignatureAlgorithmをHS256にする
  • Allowed Callback URLsはAlexa指定のURLを設定 (ACCOUNT LINKING -> Alexa Redirect URLs)
  • Grant TypeとしてAuthorization Codeを有効化

Alexa Skill設定

Alexaの開発コンソールのACCOUNT LINKING (Build -> ACCOUNT LINKING)で以下を設定。

  • **Do you allow users to create an account or link to an existing account with you?**を有効化
  • **Allow users to enable skill without account linking (Recommended).**を有効化
  • Select an authorization grant typeでAuth Code Grantを選択
  • Your Web Authorization URI: auth0のOAuth Authorization URL(Settings -> Advanced Settings -> Endpoints)
  • Access Token URI: auth0のOAuth Token URL(Settings -> Advanced Settings -> Endpoints)
  • Your Client ID: auth0のClient ID(Settings)
  • Your Secret: auth0のClient Secret(Settings -> Client Secret)
  • Your Authentication Scheme: HTTP Basic (Recommended)
  • Scope: openid, offline_access, profile, email
  • Domain List: cdn.auth0.com