このエントリはMagento Advent Calendar 2019の4日目です。

前回はMagentoに用意されているREST APIを使うための準備編ということで、権限や認証情報の設定方法を紹介しました。
今回は認証方法別の利用方法について紹介したいと思います。

前回のおさらい〜利用できる認証方法〜

前回はMagentoのAPIで

  • トークン認証
  • OAuth認証
  • セッション認証

の3種類の認証方法が利用できると説明しました。
(わからない方は前回の記事に戻って読んでください)

認証方法別の利用方法

では、認証方法別に解説していきましょう。

トークン認証

まず最初はトークン認証です。
この方式では、予め作成しておいたトークンを用いて認証を行います。
トークンの値は、Magentoの管理画面で作成したインテグレーション設定で表示されるキーの上から3番めのものを使用します。
最も簡単にトークン認証を試すには、curlが使える環境の場合であれば、以下のようにします。

curl -XGET -H 'Authorization: Bearer トークン' -H 'Accept: application/json' http://サーバーのIP/rest/V1/orders/注文のID

トークンとサーバーのアドレスが正しければ、Unix環境の場合であれば画面上にJSONデータが表示されます。
トークン認証で重要なのは、HTTPヘッダにAuthorizationヘッダを追加するという点です。これを忘れると認証ができません。

昨今のプログラム言語であれば、大抵HTTPクライアントライブラリが存在しているので、それらを使うと簡単だと思います。

OAuth認証

OAuth認証の場合、手順が少し面倒になります。
というのも、OAuth認証の場合は、

  1. リクエストトークンの取得
  2. アクセストークンの取得

の2ステップが利用開始前に必要になるからで、トークン認証よりもHTTPリクエスト数が増えるぶん、処理が煩雑になります。
(もちろんこの流れはOAuthの一般的なものなので、Magentoの実装が特別なわけではありません)

OAuthによる連携の実装サンプルはDevdocsにPHPでの実装例が掲載されているので、そちらを見ていただくのが良いでしょう。
OAuth認証はシステム間連携というより、GUIを持つアプリケーション連携で使用することを目的としていると思ってください。

セッション認証

最後はセッション認証です。
実はこの方式の場合はAPI呼び出しに関して明確な認証ステップはありません。というのもセッション認証の場合はMagentoの管理画面あるいはフロントエンドでのログイン状態を利用するからです。
要はセッション認証を使うAPIというのは、今ログインしているユーザー(あるいはゲスト)自身に基づくデータを使用することを前提にしたものばかりであるということです。

例えばフロントエンドの購入画面では、配送方法の選択や支払い方法の選択、あるいはクーポンやポイントの利用によって合計金額の変動が起きます。
Magentoはこれらの操作に連動する合計金額の再計算処理をセッション認証APIで行っています。

システム間連携ではどの認証方式を使うべきか

結論から言うと、トークン認証です。
もちろん、GUIベースで連携させたいのであれば、OAuth認証を使っても良いと思います。 ただ、REST APIを使いたい多くのケースでは、

  • Magento上のデータを他のシステムから取得したい
  • Magento上のデータを他のシステムから更新したい

という要望に基づくことが多いと思います。
アクセス元や経路が特定できているシステム同士の連携であれば、トークン認証がシンプルかつ簡潔な認証方式でしょう。

次回はトークン認証を使いながら、いくつかのAPIの使い方を解説していきたいと思います。