アプリケーション開発者目線で、認証デバイスの実装を考えてみる

こんにちは。

「認証デバイスってどうやって実装するの…」「認証サービスを選択するための判断基準がわからない…」
とお悩みではありませんか?

そんなアプリケーション開発者に向けて、認証デバイスの実装方法を紹介します!

この記事は以下の悩みがある人におすすめ!

  • 認証デバイスの実装には、どんな方法があるの?
  • 開発しているアプリケーションに適した実装方法が知りたい…
  • アプリケーションの影響範囲や開発工数が気になる…

本記事を読み終わる頃には、「認証デバイスの実装方法の方針が決まる」ようになりますので、ぜひご覧ください!

1 認証デバイスを実装するためのポイント

アプリケーションに認証デバイスを実装するとき、おさえておきたい以下のポイントがあります。

  • 認証デバイスの使用目的
  • アプリケーションの構成

この2つのポイントを観点に、実装方法を検討します。

そうすると結果的に「開発する(している)アプリケーション」に適した実装方法を選択することができます。

2 認証デバイスの使用目的

アプリケーションで、「何を目的に認証デバイスを使用するのか?」を整理してみましょう。

使用目的の多くは、アプリケーションのログイン時のユーザ認証です。

しかし、アプリケーションはリリースして終わりではなく、機能などのアップデート開発が継続して行われます。

「認証デバイスをログイン以外でも使えない?」

すでにアプリケーションへの実装を成功させている場合、知識と経験からアイデアの実現はそれほど難しくありません。

ただし、認証デバイスの実装方法によっては、実現が難しくアプリケーション開発者を苦しめることがあります。

実装方法に大きく影響されるケースをご紹介します。

  • ユーザと認証デバイスが紐づくケース
  • ユーザと認証デバイスが紐づかないケース

「ユーザと認証デバイスが紐づくケース」とは、ログイン認証のように、認証デバイスを持っている人をアプリケーションのユーザとする関係です。

「ユーザと認証デバイスが紐づかないケース」は、認証デバイスを持っていれば、ユーザは特定しません。例えばZipの暗号/復号に認証デバイスを使用するケースです。

実装後に後悔しないために、認証デバイスの使用目的が、「認証デバイスの二次活用の要望が出そうか?」「ユーザに紐付けない使い方をするか?」を考えてみましょう。

3 アプリケーションの構成

次は認証デバイスを使用するアプリケーションの構成について整理してみましょう。

ここでは便宜上、スタンドアローンとクライアントサーバ(WEBシステム含む)に分けます。

認証デバイスを使用するアプリケーションの構成が、どちらになるか確認してください。

4 認証デバイスの実装方法は?

お待たせしました。ここからは認証デバイスの実装方法をご紹介します。

実装方法は以下の3つに分類し説明します。

組み込み型

認証デバイスメーカーのSDK(Software Development Kit)を使って、認証デバイスの検証処理をアプリケーション内に作り込みます。

既存アプリケーションへの影響は小さく、開発者の自由に実装できるのが特徴です。

また、アプリケーション内で認証デバイスの処理を完結できるため、オフライン環境でも使えます。

SDKによっては、仕組みを理解するための学習コストが発生します。

サービス型

ユーザと認証デバイスの管理、ユーザ認証処理までをサービス提供します。
複数の認証デバイスに対応しているサービスもあります。

サービスの提供方法は、オンプレミスやクラウドなど様々です。オンプレミスは、クラウドと比べ運用負荷が大きくなることに注意しましょう。

認証デバイスによるユーザ認証をサービス側で処理してくれるため、少ない学習コストで実装できます。その反面、アプリケーションはサービスと通信できる環境が必須条件になります。

既存アプリケーションへの影響は大きく、「ユーザ情報の二重管理」「アプリケーション内のユーザ情報をサービス側に移行(外出し)」など、ユーザ情報をどのように管理するか検討・改修する必要があります。

DAuth

認証デバイスの検証処理をサービス提供します。複数の認証デバイスに対応しています。

認証デバイスの検証はDAuthで処理し、ユーザ認証の処理はアプリケーション側で従来通り行います。そのため、既存アプリケーションへの影響は小さく、少ない学習コストで開発者の自由に実装できるのが特徴です。

DAuthの提供方法はクラウドです。
開発者はサーバ構築や運用管理に手間をかけることなく利用できます。
アプリケーションは、DAuthと通信するためインターネット環境が必須条件になります。


【組み込み型】

 実装イメージ

アプリケーションの構成メリットデメリット
共通・既存アプリケーションへの影響が小さい
・ユーザと認証デバイスが紐付かないケースにも対応できる
・オンライン、オフラインに依存しない
・学習コストが大きい
・複数の認証デバイスに対応する場合、それぞれの認証処理の作り込み、契約が必要になる
スタンドアロン・改修が発生するとアプリケーションの再配布や修正パッチなど必要
クライアントサーバ・改修が発生した場合、サーバの改修のみで済む

【サービス型】

 実装イメージ

アプリケーションの構成メリットデメリット
共通・認証処理はサービスから提供されるAPIを呼ぶだけ
・複数の認証方法(デバイス)に対応している
・認証デバイスに関することは、サービス提供側でメンテナンスしてくれる
・ユーザの二重管理、またはユーザ情報をサービス側に移行するなど、既存の仕組みへの影響が大きい
・ユーザと認証デバイスが紐づかないケースには対応できない
・クラウドサービスの場合、オンライン環境でしか使えない
スタンドアロン・アプリケーションがインストールされている端末が、サービスまで通信できる環境が必要
クライアントサーバ・サーバのみ、サービスまで通信していれば利用可能

【DAuth】

 実装イメージ

アプリケーションの構成メリットデメリット
共通・既存の仕組みへの影響が小さい
・ユーザと認証デバイスが紐づかないケースにも対応できる
・認証処理はサービスから提供されるAPIを呼ぶだけ
・複数の認証方式(デバイス)に対応している
・認証デバイスに関することは、サービス提供側でメンテナンスしてくれる
・APIの動作検証サイトがあり、アプリケーションに実装前に動作確認ができる
・オンライン環境でしか使えない
スタンドアロン・アプリケーションがインストールされている端末がインターネットに接続できる環境が必要
クライアントサーバ・サーバのみインターネットに接続していれば利用可能

5 【パターン別】おすすめの実装方法

ここまで読んでいただいて「どの実装方法が、アプリケーションに向いているかわからない?」という方もいらっしゃると思います。

そこで、アプリケーション開発者の悩みや要望から、おすすめの実装方法を用意しましたので、参考にしてください!

1.ユーザの管理も含め、外部サービスを利用したい
⇨「サービス型」がおすすめです!
アプリケーションのユーザと認証デバイスを外部サービスで管理します。
※既存アプリケーションに認証デバイスを実装する場合は、仕様変更の範囲が大きくなり注意が必要です。

2.既存アプリケーションへの影響を小さく実装したい
⇨「組み込み型」「DAuth」がおすすめです!
既存のユーザ認証処理の手前に、認証デバイスの検証処理を入れることで実装できます。オフライン環境では「組み込み型」、オンライン環境では「DAuth」という選択もできます。

3.認証デバイスを二次活用したい
⇨「組み込み型」「DAuth」がおすすめです!
ユーザに紐付けず認証デバイスを使用する場合、「サービス型」では実現が難しいです。オンライン環境であれば、アプリケーション配布後のメンテナンス面でもすぐれている「DAuth」がおすすめです。

4.複数の認証デバイスに対応したい/WEB・非WEBの利用シーンがある
⇨「サービス型」「DAuth」がおすすめです!
「CUI(キャラクタ・ユーザ・インタフェース)では、OTP(ワンタイムパスワード)が使える認証デバイス」、「WEBアプリケーションではFIDO認証デバイス」と、認証デバイスにも利用シーンによる相性の良し悪しがあります。「組み込み型」では、それぞれの認証デバイスごとの契約や学習コストが発生するため、複数デバイスに対応している「サービス型」「DAuth」がおすすめです。

6 まとめ

この記事では、アプリケーション開発者目線で、認証デバイスを実装するときのポイントを紹介しました。

以下にまとめたので、わからない部分は再確認してくださいね!

  • 認証デバイスをユーザ認証以外で使う可能性がある場合、「組み込み型」「DAuth」
  • 既存アプリケーションへ小さい影響で実装したい場合、「組み込み型」「DAuth」
  • 複数の認証方式(デバイス)に対応する場合、「サービス型」「DAuth」

認証デバイスは、アプリケーションから独立し単体でも利用できます。

そのため、「認証デバイスを導入した後の二次活用の相談」「別アプリケーションで使用している認証デバイスの対応依頼」のように、自分が作成したアプリケーション以外でも、認証デバイスを利用することがあります。

他アプリケーションに実装するときの手離れの良さも、自分だけではなく関係者にとっても大切なことですね。是非、実装方法を選択するときのポイントに加えてみてください。

いかがでしたか。
認証デバイスの実装方法の方針は見えてきたでしょうか?

より具体的な実装に関するご相談も受け付けています。
こちらからお問い合わせください。

最後まで読んでいただき、ありがとうございました!

このコラムにコメントする

コメントは承認制とさせていただいているため、反映まで少しお時間をいただきます。あらかじめご了承ください。

コラム一覧

お見積り・導入に関する
ご質問・サービスの詳細など
ご不明な点は
お気軽にお問い合わせください