LoginSignup
2
3

More than 3 years have passed since last update.

Push認証(多経路認証)とNotificationサービス(1)

Last updated at Posted at 2020-02-20

はじめに

スマートフォンへのPush通知は普段から皆さんが接する機会が多いと思います。
また、Push通知のためのクラウドサービスも昨今充実してきたと感じます。
今回はそのクラウドサービスとPush通知の仕組みを利用して、Push認証(多経路認証)を構成する仕組みの理解や手順の把握を目的とした記事を掲載しようと思います。
Push認証(多経路認証)を実現するソフトウェアとしてOpenAMを利用します。
クラウドサービスについては、AWSのSimple Notification Service(SNS)、GoogleのFirebase Cloud Messaging(FCM)、AppleのApple Push Notification Service(APNs)を利用します。
Android,iOSのスマートフォンで実演します。
第1回としてPush認証(多経路認証)の動作を紹介します。

(1)デバイス登録

とにもかくにも動きをみてましょう。
はじめにOpenAMへユーザーのデバイス登録をおこないます。

flow1.png

ブラウザ上でOpenAMに認証した後にバーコードが表示され、それをスマートフォンのAuthenticatorアプリがカメラ機能で読み取ります。アプリが読み取ったOpenAMのAPI情報やチェレンジコード、共有鍵から、生成したデバイストークンをOpenAMに送信します。OpenAMはAWS SNS上に該当デバイスのエンドポイントを登録します。エンドポイントの登録が成功すればOpenAMが利用するデータストアにも情報を登録します。

実際の画面のスナップショットです。
※開発中の画面です。

①デバイストークン生成
こちらはAuthenticatorアプリをインストールした際に生成しています。

②ID/PWD認証
PC上のブラウザです。
pushreg1.png

③バーコード表示
pushreg4.png

④バーコード取込
スマートフォン上の画面です。
pushreg6.png
pushreg7.png

⑤デバイス登録
PC上のブラウザに登録完了された画面が表示されます。
※この画面が表示されたときには既に⑥、⑦も完了しています。
pushreg8.png

⑥エンドポイント登録
AWS SNS上のFCMのプラットフォームにデバイスのエンドポントが表示されます。
awssns5.png

⑦Push情報登録
OpenAMのダッシュボードには登録されたPush Deviceが表示れます。
pushreg10.png

(2)Push認証

デバイス登録が出来たら実際に認証してみます。

flow2.png

PC上のブラウザで認証が必要なアプリケーションのページにアクセスすると、OpenAMがID入力画面を表示します。
IDを入力してログインすると、Push認証の待受け画面を表示します。
OpenAMからAWS SNS、Google FCM経由でスマートフォンのAuthenticatorアプリに通知が飛びます。
スマートフォン上で認証を許可すると、PC上のブラウザでは待受け画面からアプリケーションのページに遷移します。

①ID入力
pushauth1.png

②Push情報参照
これはOpenAMが先ほどのデータストアに登録された情報をIDを元に取りだします。

③Push認証待受け表示
pushauth2.png

④トピック通知
OpenAMからAWS SNSのトピックというNotificationのポイントに送られます。

⑤プラットフォーム通知
AWS SNSからGoogle FCMのプラットフォームに通知がおこなわれます。

⑥デバイス通知
pushauth3.png

⑦認証応答
Androidの場合はAcceptかRejectで応答します。
pushauth6.png

iOSの場合はTouch IDで応答します。
pushauth10.png
実機がiPhone11でTouch IDがないためパスコードが表示されています。
Face IDでも利用できるよう改良予定です。

⑧認証完了
待受け画面が解除されてサンプルアプリケーションの画面が表示されています。
pushauth9.png

おわりに

まずはPush認証(多経路認証)がどういうものか理解してもらえたでしょうか。
ワンタイムパスワードの認証と似ているかと思いますが、違いとしてはログイン画面でのパスワードの入力が不要となります。
それからスマートフォンでの認証応答でボタンを押すだけなので、わざわざOTPコードを入力する必要がありません。
また、スマートフォン上のNotificationをタップすればアプリが自動的に表示されるためUXも向上します。
ただし、Push認証の場合は通知をするためのクラウドサービスの準備が必要となります。
次回では、OpenAMやAWS SNS、Google FCMの設定方法について紹介したいと思います。

追記

2020/03/04 Push認証を利用する場合におわりにであげたようにパスワードを入力しないケースでは、あるユーザが誰か他のユーザーのIDを推測してログインを実行したときに、他のユーザーが自分のデバイスでそのリクエストを混同して許可してしまうということが想定されます。
通常はID/パスワード認証に加えた多要素認証として利用することが推奨されています。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3