LwAモバイルSDKの概要

Dash Replenishmentサービス(DRS)にアクセスするDRS対応デバイスは、Login with Amazonのアクセストークンを取得する必要があります。すべてのリクエストは、このアクセストークンと一緒に送信されます。このドキュメントでは、Login with Amazon SDK for AndroidまたはLogin with Amazon SDK for iOSを使ってアクセストークンを取得する方法について説明します。

前提条件

コンパニオンアプリにLwA SDKを組み込むには、あらかじめ対象デバイスに、コードベリファイアを生成する機能とコードチャレンジを作成する機能が必要です。これらの値は、コードチャレンジの方法と共に、LwAに渡され、対象デバイスからのリクエストが検証された後、トークンが交換されます。LwAに実装されているSymmetric Proof of Possessionは、Proof Key for Code Exchange by OAuth Public Clientsに準拠しています。

  • コードベリファイア

    コードベリファイアは、対象デバイスによって生成される暗号論的にランダムな文字列で、この文字列がハッシュ(SHA256)されてコンパニオンアプリに渡されます。この文字列は長さ43~128文字とし、URLとファイル名に使用できるアルファベット文字([A-Z]、[a-z]、[0-9]、「-」、「_」、「.」、「~」)で構成されている必要があります。

    コードベリファイアは、機密を要するデータです。決して対象デバイスから転送されないようにしてください。

  • コードチャレンジ

    クライアント/対象デバイスには、コードベリファイアからコードチャレンジを作成する機能が求められます。コードベリファイアに対しては、次のいずれかの変換方法を適用できますが、推奨されるのはSHA-256です。

    • plain コードチャレンジとコードベリファイアは等価

    • S256 コードベリファイアのSHA256ハッシュをBase64urlでエンコーディングしたもの。Base64urlエンコーディングした文字列には、「=」、「+」、「/」のいずれの文字も含めないでください。JavaでCodeChallengeを生成する例:

      codeChallenge = base64UrlEncode(MessageDigest.getInstance(ALGORITHM_SHA_256)
                        .digest(codeVerifier.getBytes(Charset.defaultCharset())));
      

    Proof Key for Code Exchange by OAuth Public ClientsのAppendix Aを参照してBase64urlエンコーディングの実装に関する詳細をご確認ください。

  • コードチャレンジの方法

    コードチャレンジを得るための方法。LwAは、plainとSHA-256の両方に対応しています。

DRSでLwA SDKを使うためのプラットフォームの選択肢

Login with Amazon SDK for AndroidまたはLogin with Amazon SDK for iOSをDRSで使うための手順については、次のいずれかを参照してください。