API認証とは?API連携で役立つ認証パターン・認証フローまとめ
外部APIを利用してWebシステムを開発する場合、頭を悩ませる問題が認証関連です。自システム内で認証する場合は、Cookieを利用できますが、外部APIは物理的にまったく別のところで動いているため、Cookieが利用できません。今回は、API連携でついつい悩んでしまう、認証についてフローをまとめました。
認証の種類やクライアント証明書についての基礎知識、多要素認証について解説します。最後に、そのような難しい認証の手続きを踏まなくても利用できる天気予報情報取得API「Lifesocket」についてご紹介しますので、あわせてご覧ください。
目次[非表示]
ダウンロード:天気APIサービス概要資料
「天気予報情報を取得して自システムに役立てるようにしたい」とお考えの場合は、認証フローで悩まされることのないLifesocketの利用をぜひご検討ください。
API開発で頭を悩ませる認証
通常のWebシステムでは、ログイン時に取得したユーザー情報をCookieに格納して、必要に応じてその情報を取り出して利用することで、利用ユーザーを特定しています。しかし、Cookieが利用できる範囲は、あくまでもそのWebシステム内だけです。外部が用意しているAPIを利用する場合は、Webシステム外のシステムとの連携となるため、Cookieは利用できません。外部APIと連携する場合に検討するべき認証方法をいくつかご紹介します。
【パスワード認証】
パスワード認証は、非常にシンプルかつ昔から使われてきた認証方法です。クライアントの画面でユーザーIDとパスワードを入力してもらいましょう。連携API側で正しいユーザーIDとパスワードなのかを認証したら「トークン」と呼ばれる連携APIが決めた代わりのパスワードのようなものが返却されます。以降は、そのトークンを使ってデータのやり取りをします。
この方法はシンプルで分かりやすいのですが、比較的簡単に偽装認証されやすく、悪意のある第三者の標的にされることが多いです。現在、パスワード認証はこのような問題があるため使われなくなりつつあります。
【トークン認証】
パスワード認証が抱えるなりすましと認証情報ダダもれに対応するために登場した認証方法がトークン認証です。トークン認証は、外部API側があらかじめトークンを用意しておいて、APIの利用システム側でそのトークンを画面で入力させます。
こうすることで、こちら側の認証情報を渡さなくて済むため情報がもれる危険性はなくなります。ただ、トークンは利用するシステム側で1つのみ用意されるため、一度に単一ユーザーしか扱えない点がデメリットです。
【認証コードの発行】
トークン認証では、一度に単一のユーザーしか扱えない問題がありました。この問題をさらに解決するための認証方法が、認証コードの発行です。この方法では、自システム内でログイン処理を行ってから、認証コードの発行を外部API側に要求します。API側から戻ってきた認証コードを使って、もう一度自システム側から外部API側でトークンを発行して認証します。
かなり複雑ですが、このような手続きを経ることで複数のユーザーが一度に同じ外部サービスを使えるようになるのです。ただし、ここで使うトークンがいつまでも使えてしまうと、なりすましに隙を与えることになります。しかし、トークンが有効期限切れになってしまうと再発行する必要がありますので、この手間はデメリットであると言えます。
【アクセストークンおよびリフレッシュトークンの発行】
ここまでの欠点を克服できる認証方法が、アクセストークンとリフレッシュトークンの2つを用意するパターンです。アクセストークンを短めの有効期限とし、リフレッシュトークンはアクセストークンよりも長めの寿命を持たせます。こうすることで、同じトークンを持ち続けるというセキュリティ上の問題行為も解消可能です。
クライアント証明書とは
クライアント証明書は、個人や組織の認証に必要な電子証明書のことです。「この人は間違いなく〇〇社の社員です」という電子証明書を認証する側が作って当人に配布します。クライアント証明書は、デバイス内に作られ、システムを利用するユーザーはそのデバイスを使って認証することになります。
この方法は、「あらかじめユーザーに電子証明書を発行して渡しておく」という手間が必要ですが、なりすましなどのセキュリティリスクの防止に有効です。
多要素認証を取り入れる難しさ
多要素認証とは、複数の認証情報を同時に検証して、どの認証情報が間違っていたかの情報を見せないようにする認証方法です。これに対し、多段階認証は、複数の認証情報をひとつひとつ検証して、段階的に認証を進めていきます。
例として、PCI DSSというクレジットカード会社・会員の認証手続きにおける国際基準の場合を取り上げましょう。PCI DSSでは、記憶情報・認証情報・生体情報のうち2つを使って多要素認証をするように定義されています。このとき、渡した情報は同時にチェックされ、「どの情報がエラーなのかは見せない」という動きとなります。
多要素認証の定義で少々複雑な点は、「プログラム内で順番にチェックする」というフローをプログラムで表現すると、実質多段階認証だと見なされますので注意しなくてはなりません。渡ってきた複数の認証情報チェックは、そのまま別スレッドを起動し、同時進行でチェックするようにするなど特殊なフローにしなければならず、プログラムも複雑化しやすく、処理実装時の工数増大やメンテナンス性の低下を招きやすいです。
Lifesocketは認証フローなくAPI連携が取れる
多くの外部提供APIは、ここまでご紹介してきたように、さまざまな認証フローが規定されています。ところが、「天気予報情報取得API」のLifesocketは、そもそも認証が不要なため、このような認証フロー問題に頭を悩ませる必要がありません。
シンプルでかつ堅牢な認証処理で情報取得処理には手間がかからず、大切なユーザーインターフェース実装に時間をかけられます。「天気予報情報を取得して自システムに役立てるようにしたい」とお考えの場合は、認証フローで悩まされることのないLifesocketの利用をぜひご検討ください。
Lifesocket 天気API詳細はこちらから>
Lifesocket価格・プランはこちらから>
まとめ
API連携で頭を悩ませることの多い認証フローについてまとめました。社内システムやWEBサイト、アプリなどで天気予報を表示したい時は、簡単に実装できて開発やメンテナンスのコストも削減できる、Lifesocketを試してみてはいかがでしょうか。