検索
連載

「OAuth 2.0」の基本動作を知るデジタルID最新動向(1)(4/4 ページ)

SNSなど複数のWebサービスが連携して動くサービスが広く使われている。連携に必要不可欠なのが、アクセス権限をセキュアに受け渡すための仕組みだ。本連載ではこのような仕組みのうち、「OAuth 2.0」や「OpenID Connect」「SCIM」の最新動向と技術の内容を紹介する。

Share
Tweet
LINE
Hatena
前のページへ |       

ユースケース3:Webアプリケーションを持つサービスがネイティブアプリケーションを提供

 ユースケース3では、特定のサービスから離れます。Webアプリケーションを持つサービスがネイティブアプリケーションを提供する際に、どのようにOAuth 2.0を使えばよいのかを紹介します。ここでは前提条件を3つ選びました。

  • Webアプリケーションとネイティブアプリケーションの両方を提供するサービスがある
  • ネイティブアプリケーションはバックエンドサーバと通信し、Webアプリケーションが持つ機能の一部に特化したサービスを提供する(今後、同様のネイティブアプリケーションを増やす可能性があるなど)
  • 登録とログインの処理はWebアプリケーション側で実装済みのものを利用する

 単純なWebアプリケーションのネイティブ化ということであれば、全ての機能を実装し直せばよいという対応になるでしょう。ここでは具体的なサービス名を出しませんが、例えばSNSやポータルサイトが個別の機能をネイティブアプリケーションに切り出して、使い勝手を高めるというようなケースに相当します(図10)。

図10
図10 既存のWebアプリケーションの機能の一部をネイティブアプリケーション化する

 4要素の役割は次のようになります。

役割 実体
Resource Owner ユーザー
Client ネイティブアプリケーション
Resource Server 同一サービスのサーバ
Authorization Server 同一サービスのサーバ

 定義1のClient Registrationは、サーバ内の設定を追加するなどで対応できるでしょう。ユーザーがネイティブアプリケーションにログインする際に、外部のWebブラウザを開いてログイン画面(新規登録画面)へと誘導します(図11)。

図11
図11 ネイティブアプリケーションとWebアプリケーションが連携する場合のOAuth 2.0の動作(全体像)

 ユースケース3では、ClientとAuthorization Server、Resource Serverの3要素が同一サービスに含まれています。場合によっては、アクセス許可への同意をユーザーにも求める画面などを出さずにネイティブアプリケーションに戻る実装となるかもしれません。ここまでの処理が、定義2のObtaining Authorizationに当たります。

 ログイン状態となった後にバックエンドサーバからネイティブアプリケーションで扱うデータを取得する処理が、定義3のAccessing Protected Resourcesの範囲です。

 これらの処理をSDKで実装しておくとよいことがあります。同一サービス内の他の機能をネイティブアプリケーションとして切り出す際にも、サービス内部で定義1のClient Registrationを行うだけで、比較的容易に登録とログインの機能を実装できるでしょう。

ネイティブアプリケーションを使う際の技術課題とは

 ユースケース3はネイティブアプリケーションを使いますから、他のユースケースには存在しない点に気を付けなければなりません。

  • ネイティブアプリケーションにアクセスを許可する範囲を適切に設定する
  • 新規登録とログイン処理を終えてネイティブアプリケーションに戻る部分を、特に安全に実装する
  • Webアプリケーションでパスワードの再確認を必要とするような処理を行うときは、OAuth 2.0以外の仕様を利用する必要がある

 Webアプリケーションと比べて、ネイティブアプリケーションはモバイル端末上で動作する仕組み上、安全な実装をすることが比較的困難です。アクセスを許可する範囲について、ネイティブアプリケーションが必要とする最小限の内容に抑えることで、第三者にアクセス権限を奪われた際のリスクを低くすることができます。

 ネイティブアプリケーションとWebブラウザとのやりとりが安全になるよう実装できていないと、第三者によるセッションハイジャックなどのリスクが発生します。

 Webアプリケーションでパスワードの再確認を必要とする処理をネイティブアプリケーションで実装しようとすると、「いつ、誰がパスワードを再確認したか」といった情報を扱う必要が出てきます。これはOAuth 2.0の仕様でサポートされている範囲を超えており、別の仕様を参照しながら実装していく必要があります(冒頭の囲み記事参照)。

脆弱性対策はどうなっているのか

 今回は、OAuth 2.0の仕様を振り返り、3つのユースケースを紹介しました。ユースケース2と1で取り上げたFacebookへのRead(プロフィール情報を参照してソーシャルログイン)、Write(記事投稿)については、5年前と変わらず広く使われ続けており、より安全な実装のためのノウハウも比較的整っているといえます。

 最後に紹介したユースケース3については、この5年の間で仕様自体が進化しています。

 ネイティブアプリケーションのOAuth 2.0実装については、既存のRFC 6749だけでは対応できない脆弱(ぜいじゃく)性が見つかり、対応するための拡張仕様がRFC化されています。

 次回は、この5年間で見つかったOAuth 2.0に関する脆弱性について取り上げ、対策や関連する拡張仕様についても紹介します。

更新履歴

【2017/09/01】過去の連載に向けたリンクを追加しました。


筆者紹介

Ryo Ito(ritou)

http://d.hatena.ne.jp/ritou/

OpenID Foundation Japan Evangelist

OpenID Connectのコントリビュータとして仕様策定に関わっている。

業務ではアイデンティティ技術を用いたSNSサービスの機能強化、新規サービスのプラットフォーム開発に関わり、個人ブログではOpenID/OAuthについて情報発信を行っている。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       

Security & Trust 記事ランキング

  1. 「生成AIのサイバー攻撃への悪用」は増加する? 徳丸浩氏が予測する2025年のセキュリティ
  2. AWS、組織のセキュリティインシデント対応を支援する「AWS Security Incident Response」を発表 アラートに圧倒されるセキュリティチームをどう支援?
  3. 商用国家安全保障アルゴリズム(CNSA)の期限となる2030年までに暗号化/キー管理サービス市場が60億ドルに達するとABI Researchが予測 急成長の要因とは?
  4. ChatGPTやClaudeのAPIアクセスをかたってマルウェアを配布するPython用パッケージ確認 Kasperskyが注意喚起
  5. Google、オープンソースのセキュリティパッチ検証ツール「Vanir」を公開 多種多様なAndroidデバイスの脆弱性対応を支援するアプローチとは
  6. 高度なAIでAIをテスト OpenAIが実践するAIモデルのレッドチーム演習とは
  7. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  8. 「SQLite」のゼロデイ脆弱性、GoogleのAIエージェントが見つける AIは脆弱性調査の課題をどう解決したのか?
  9. 従業員は「最新のサイバー脅威との戦い」を強いられている セキュリティ教育に不満を持つ理由の1位は?
  10. 堅調なID管理や認証、脅威インテリジェンスなどを抑え、2024年上半期で最も成長したセキュリティ分野は?
ページトップに戻る