announcements

テレビを観るのと同じくらい簡単で、煩わしい認証を排除したOAuth 2.0 Device Flow

OAuth 2.0 Device Flowが、入力に制約のあるデバイスへの認証および認可をどのようにスムーズに行うかについてご覧ください。

Jun 19, 20191 min read

スマートテレビに資格情報を入力する際、リモコンやオンスクリーンキーボードを使用することにうんざりしていませんか?本記事を読んでいるあなたは、この問題の対処に幾度となく取り組んできたと思いますが、それでも最終的には顧客に委ねざるを得ません。では、スマートフォンの画面を数回タップするだけで、ユーザーがログインできるようにサポートしてみてはいかがでしょうか?

テレビのリモコンを使用して資格情報を入力している人物の画像

こんにちは。Auth0開発チームのDanです。ここでは、OAuth 2.0 Device Flowについてご紹介します。この認証を利用すれば、スマートテレビや入力に制限のあるデバイスに簡単に、迅速に、そして安全にログインできます。キーボードもブラウザも使用しません。

従来のログイン方式は面倒で、エラーも多発します。OAuth 2.0 Device Flowは軽快で、わずか数秒で認証でき、テレビはもちろん、ゲームコンソール、CLI、プリンタなどにも対応しています。

Auth0は、OAuth 2.0 Device Flowに完全に準拠した実装を提供することで、開発者がこうしたユーザーエクスペリエンスの悩みの種により簡単に取り組めるようにしました。入力に制限のあるデバイスとはどのようなものか、どのように認可付与が行われるのか、そしてどのようにAuth0がサポートしているのか、詳細を見ていきましょう。

入力に制限のあるインターネット接続デバイスとは

(1) ブラウザを持たないか、または (2) テキスト入力方式が実用的ではない、インターネット接続デバイスをお持ちではありませんか?

お持ちなら、それは入力に制限のあるデバイスです。どのようなタイプのデバイスを頭に思い浮かべましたか?私なら...

  • 複合機
  • フィットネストラッカ
  • ストリーミングデバイス
  • 電動歯ブラシ
  • ゲームコンソール
  • 冷蔵庫
  • テディベア
  • 車載インフォテインメントシステム
  • スマートテレビ
  • 頭に「スマート」と付く単語なら何でも

スマートテレビ、プリンタ、ゲームコンソール、その他の典型的な入力に制限のあるデバイス

モノのインターネット(IoT)の急激な台頭により、多くのデバイスはオンライン化されました。今日そして将来的にも、IoTデバイスで実行されるソフトウェアは、デバイスやプラットフォームを超えて顧客に豊かなユーザーエクスペリエンスを提供するために必要なデータを取得するため、御社のサービスAPIを呼び出す場合があります。しかしながら、そのようなユーザーエクスペリエンスは、デバイスに外部サービスを簡単に認可する方法が実装されていなければ、あまり豊かにも安全にもならない可能性があります。

入力に制限のあるデバイスに許可付与するのは難しいもの。では、入力に制限のあるインターネット接続デバイスとはどのようなものでしょうか?このブログ記事で詳しく解説します。

これをツイートする

競争市場でしのぎを削る企業として、ブラウザを使用しない認証を提供できないという理由で、御社のサービスを使用できるデバイスに制限をかけたくはありません。ただし、デバイスがブラウザやユーザーインターフェイスを提供しない場合でも、顧客には、テレビのリモコンの矢印を使用して資格情報を入力し、巨大なオンスクリーンキーボードからキーを選択させたくはないものです。例えば、顧客が入力に手間取っている間に、何者かが画面を録画していれば、顧客の資格情報が漏えいする可能性があります。

さらに、御社の管理外にあり、今後のアクセスのためにユーザーの資格情報を保存可能なシステム(御社のAPIにアクセスする専用のシステムやサードパーティクライアントを活用することもあるスマートディスプレイなど)にユーザー資格情報が入力されることがないようにしたいでしょう。

求められるのは、様々なデバイスで御社のAPIへのアクセスを制御することで、サードパーティアプリケーションを認可する方法です。OAuth 2.0 Device Flowは、それを確実に実現します。ブラウザを実装していないデバイスでも、標準的な委譲型認可プロトコルのセキュリティとユーザーエクスペリエンスの利点を活用できます。

Device Flowの取り扱い方を理解するため、ビデオストリーミングアプリを例にとり、実際の仕組みを見ていきましょう。

OAuth 2.0 Device Flowの仕組み

AuthU TVという技術者向けの架空のビデオプラットフォームをテレビで観るとします。最初に、AuthU TVアプリをスマートテレビにダウンロードします。初めてアプリを開くと、ログイン画面が表示されます。

手始めに、別のデバイス(スマートフォンやラップトップなど)でURLにアクセスし、短いコードを入力し、AuthUアカウントにログインしてユーザー認証を行う必要があります。

このプロセスが完了すると、テレビのソフトウェアからAuthUアカウントへのアクセス権が付与されます。AuthUコンテンツに移動するには、リモコンを使用する必要がありますが、資格情報の入力は不要です。

デバイスに接続するOAuth 2.0 Device Flowの図

大まかに言えば、このプロセスは、YouTubeでユーザーログインの処理時にaccounts.google.comへリダイレクトされる仕組みとよく似ています。OAuth 2.0 Device Flowため、2台目のデバイスを使用して、認証プロセスを一元化されたログインページで管理します。認証プロセスをデバイスから切り離してブラウザに統合すると、MFA、SSO、ソーシャルログインなどのより高度なアイデンティティ管理機能やセキュリティ機能を活用できます。

言うは易しですので、Device Flowの仕組みを見てみましょう。当社のAuth0担当エンジニアが対話型のデモを作成しました。このデモでは、ブラウザから直接、AuthUスマートテレビアプリの認証をシミュレートできます。

まず、Device Flow Playgroundにアクセスしてください。アクセスしたら、当社のデフォルトのデモ設定を使用してプレイグラウンドを試してみるか、または自分のAuth0アカウント設定を使用して構成し、独自のアプリケーションで試すことができます。

Auth0アカウントが必要になるかですって?今すぐ無料でお始めください。Auth0の無料トライアルが提供する充実した機能を使用すると、驚きの声を上げずにはいられないことでしょう。

目的のスコープを選択することもできます。選択したら、「Get Started」をクリックしてください。

Auth0 Device Flowの始め方に関するダッシュボードを示す図

次に、模擬AuthU TVアプリからコンテンツをストリーム配信するため、「Authorize」ボタンをクリックしてアプリを認可するよう求められます。

Auth0 Device Flow:認証リクエスト

デバイスを認可するには、アクティベーション用URL(acme-demo.auth0.com/activate)に移動し、別のデバイスを使用して、スマートテレビに表示されるコードを入力します。QRコードをスキャンし、自動的にユーザーコードを入力することもできます。TVアプリは、2台目のデバイスでプロセスを完了するまで待機状態となります。このプロセス完了により、AuthU TVサービスへのアクセス権を取得するために使用可能な認可レスポンスがトリガーされます。

Auth0 Device Flow:トークンリクエスト

提供されるリンクにアクセスし、ワンタイムコードを入力して、「Continue」をクリックします。別のブラウザタブまたはスマートフォンのモバイルブラウザを使用することもできます。

Auth0 Device Flow:デバイスのアクティベーション

Auth0 Device Flow:デバイスのアクティベーションコード

サイトに表示されるコードが、スマートテレビに表示されるコードと一致することを確認し、「Continue」をクリックします。

Auth0 Device Flow:デバイスの確認

次に、アカウントを登録するか、または既存のアカウントを使用してログインします。

Auth0 Device Flow:ユーザー認証

デバイスが接続されたことを確認するメッセージがサイトに表示されます。

Auth0 Device Flow:デバイスの接続

スマートテレビに戻ると、AuthUはコンテンツのストリーム配信を開始する準備が整っています。TVアプリには、ユーザーに関する追加情報を取得してUIをカスタマイズするための認可機能が実装されています。

Auth0 Device Flow:アクティベーション完了

以上が、OAuth 2.0 Device Flowの大まかな技術概要です。続いて、どのようにアイデンティティ管理プラットフォームとしてAuth0を用いて、このプロセスを円滑化に行うかについて、詳しく見ていきましょう。

Auth0により円滑化されるOAuth 2.0 Device Flow

入力に制限のあるデバイスでAPIからユーザーデータを取得する必要があるとき、以下のプロセスが実行されます。

APIを呼び出すOAuth 2.0 Device Flowの概要

  1. デバイスアプリケーションがまだ認可されていない場合、デバイスアプリケーションはデバイスコードを取得するためにAuth0認可サーバーを呼び出します。

  2. Auth0は、URLとユーザーコードを返します。デバイスアプリは、ユーザーに2台目のデバイス(ラップトップやスマートフォンなど)で特定のURLにアクセスし、アクティベーションコードを入力することを求めます。

  3. デバイスアプリは、アクセストークンとリフレッシュトークンのためにAuth0認可サーバーのポーリングを開始します。

  4. ユーザーは、いずれかの設定済み認証方式を使用して2台目のデバイスでAuth0を認証します。Auth0は、各種プロトコル(OpenID Connect、SAML、WS-Federationなど)を使用して数多くのアイデンティティプロバイダをサポートするアイデンティティ管理ハブです。

  5. 認証が完了すると、Auth0はデイバスアプリにアクセストークンおよびリフレッシュトークンを返します。リフレッシュトークンにより、ユーザーからリクエスト許可を再び得ることなくアクセストークンを更新できます。

  6. アクセストークンを使用すると、APIを呼び出してリクエストされたデータを取得できます。

アクセストークンとリフレッシュトークンを使用すると、認証は迅速化され、持続します。OAuth 2.0 Device Flowにおけるトークンの機能に関する詳細をご覧ください。

これをツイートする

まとめ

本日は、入力に制限のあるインターネット接続デバイスの種類、そのデバイスが開発者および顧客にも提示する課題、そしてDevice Flowの実装により、OAuth 2.0に準拠したAuth0がこうした課題に対してどのように取り組むかについて学びました。

OAuth 2.0 Device Flowの最大の特徴は、既存の認証ソリューションをスマートデバイスプラットフォームにまで拡張できるところにあります。この許可付与により、顧客は一方のデバイスで実行されるアプリケーションを別のデバイスを使用して簡単に認証・認可できます。

OAuth 2.0 Device FlowをAuth0で実装するために、どのようなコードを書けばよいかについて、興味が出てきましたか?Device Flowに関する詳細なチュートリアルを近日公開する予定です。乞うご期待ください。それまでは、以下のリソースで詳細をご確認ください。

OAuth 2.0 Device Flowは、ブラウザを実装していないか、または入力に制限のあるインターネット接続デバイスで実行されるアプリケーション向けに設計されています。この認証フローにより、エンドユーザーはデバイスアプリケーションを認証してサービスAPIにアクセスできます。

これをツイートする

Auth0 について

Auth0 は、アプリケーションビルダーのためにつくられた最初のアイデンティティ管理プラットフォームであり、カスタムビルドアプリケーションに必要とされる唯一のアイデンティティソリューションです。世界中のアイデンティティを守り、イノベーターがイノベーションを起こせるようにするというミッションのもと、Auth0 はシンプルで、拡張性のある、スケーラブルなプラットフォームを提供し、あらゆるオーディエンスのために、あらゆるアプリケーションのアイデンティティを守ります。Auth0 は毎日 1 億回以上のログインを保護し、法人企業が信頼されるエレガントなデジタルエクスペリエンスを世界中の顧客に提供できるようにします。

より詳しい情報に関して、https://auth0.com/jp/もしくは@auth0_jp on Twitterをご覧ください。