OAuth(オープン認証)とは何か、そしてなぜ重要なのか?

データ侵害は、急速に発展し技術が進歩する世代において最大の脅威の一つです。データ侵害は、ビジネス、評判、さらには政府にまで壊滅的な影響を与えることがあります。さらに、重要なデータが「盗まれる」ためには、不正なエンティティによって侵害される脆弱な特権アカウントが1つだけ存在すれば十分です。デジタル化された世界は、より多くのデータを生成、共有、保存し、デジタルアカウントが一般的です。

インターネット上の多くのサービスは統合されており、互いに連携するように設計されています。しかし、サービスアカウントを使用してアプリケーションやウェブサイトにアクセスすることは、主に多要素認証(MFA)なしで特権的な認証情報を保存するという安全でない実践を伴い、プライベート情報を危険にさらします。

プライバシーとデータセキュリティの重要性は信じられないほどです。その結果、OAuthのようなオープンセキュリティ標準は、第三者間でのデータ転送中に個人情報とプライベート情報を保護します。インターネットエンジニアリングタスクフォース(IETF)によってまとめられたOAuth標準は、第三者サービスを使用している間、ウェブ上のリソースオーナーを保護します。OAuthについてもっと知るために読み続けてください。

## OAuthとは何ですか?

OAuth(オープン認証)は、ログイン情報を共有することなく、第三者が認証されたユーザー関連情報やサーバーやサービス(ウェブサイトやアプリケーションなど)上のアセットにアクセスできるようにするオープンスタンダードフレームワークです。これは、トークンベースの認証を使用してリソースオーナーに代わってサーバーリソースへの安全な委任アクセスを提供します。しかし、認証プロトコルはパスワード、電話、または生体認証を使用してユーザーの身元を確認し、オープン認証プロトコルと混同されるべきではありません。

OpenIDのような認証プロトコルとは異なり、OAuthは成功した認証の後にリソースへの限定的なアクセスを許可します。Facebook、Google、Amazon、Twitter、Paypal、Netflix、Microsoftなどの企業は、OAuthを通じて、ユーザーがアカウント情報を第三者のウェブサイトやアプリケーションと共有できるようにしています。

OAuthの分離された認証と認可の標準は、ユーザーの身元や資格情報を明らかにすることなくリソースへのアクセスを許可することで、ユーザー情報を保護します。したがって、第三者のサービスは、パスワードやその他の機密情報にアクセスすることなく、ユーザーの代わりにリクエストを行うことができます。

OAuthメカニズムは、プロバイダー、オーナー/ユーザー、クライアント/コンシューマーの3つの主要コンポーネントで構成される認証フローに従います。OAuthプロバイダーは認証サーバーであり、OAuthの主要エンジンです。リソースサーバー(FacebookやGoogleのようなAPI)は、ユーザーの代わりに第三者のウェブサイトやアプリケーションに接続するためにOAuthを使用します。プロバイダーは、リソースサーバーにホストされている情報への認証のために、クライアントサービスにアクセス認証トークンを提供します。ユーザーはリソースサーバー内のデータ/情報の所有者です。ユーザーのログインは情報の共有を確認します。クライアントは、ユーザーの情報やリソースへのアクセスが必要なウェブサイトやアプリケーションです。

アクセストークンを使用してリソースサーバーにアクセスします。最終的に、クライアントプログラムは認証を進めるためにOAuthでの登録が必要です。完全なOAuthプロセスには複数の承認が必要であり、認可されたトランザクション/アクセスには3つのコンポーネントがすべて必要です。

## OAuth 1.0

ユーザー情報のセキュリティは、データの共有、保存、利用が増加するにつれて不可欠です。その結果、データ侵害を防ぐために、アプリケーションやウェブサービスに安全な認証基準を統合することが重要です。OAuthは、ウェブサイトやAPIにおける最も安全な情報共有基準として認識されています。OAuth標準は、さまざまなクライアントアプリの認証シナリオや異なるデバイスの能力に対応するために、複数のフローをサポートしています。サーバー間アプリ、ウェブアプリ、モバイルアプリ、ウェブサイト、コンソール、またはテレビをサポートしています。

OAuth 1.0プロトコルは、APIアクセス委任のためのオープンスタンダードの不在を打倒するために2010年に公開されました。しかし、それは最初2007年にTwitterアプリケーションインターフェースの認証方法としてリリースされました。IETFは2年後にOAuth 2.0を改良された完全に新しい認証プロトコルとしてリリースしました。これは、増加したOAuthフロー、短命のトークン、およびOAuth 1.0との後方互換性のない点で、最初のバージョンと異なります。

OAuth 1.0は、デジタル署名に基づくフレームワークで委任を処理しました。それは強力で安全であり、GoogleやTwitterなどの主要なプレイヤーがサポートして採用しました。それは暗号実装と暗号相互運用性を必要とし、それによって非常に安全になりました。しかし、暗号化とキー管理の能力に十分な経験がないと、開発者が実装するのは難しいです。

OAuthは一般的に、OpenIDのような認証プロトコルではなく、許可を提供する委任プロトコルです。OpenIDはOAuth 2.0プロトコルの上に構築されたアイデンティティレイヤーです。多くのアプリケーションがOAuth 2.0を認証と認可のために使用していますが、それは委任された認可に特化しています。

OAuth 2.0 フレームワーク

OAuth 2.0 フレームワークは、認証のための業界標準プロトコルです。元のOpen Authorizationプロトコルの書き直しにより、現代のウェブおよび非ウェブクライアントに対するより包括的なソリューションを提供します。このフレームワークには、ユーザーデータをさらに安全にするための仕様が含まれています。これには以下が含まれます:

トークンの有効期限

OAuthトークンは一般的に取り消し不可能であり、1.0では有効期限がありません。その結果、トークンは完全に安全ではなく、脅威にさらされやすいです。トークンまたは検証シークレットにアクセスできる不正なクライアント/ユーザー(例えば、ハッカーや悪意のあるサイトなど)は、不正なリクエストを行い、ユーザーの認証情報や個人情報にアクセスすることができます。OAuth 2.0フレームワークは、有効期限のあるトークンでこの弱点を克服します。アクセストークンの有効期限が切れると、リフレッシュサイクルを介して別のアクセストークンが生成されない限り、アプリケーションへのアクセスも終了します。OAuth 2.0は「短命」のアクセストークンを生成します。これらはセッションの期間から数週間までの間持続しますが、ユーザーがアプリケーションの再認証のために全プロセスを繰り返す代わりに、新しいアクセストークンを取得するためにリフレッシュトークンを利用します。

クライアントサイド開発

OAuth 2.0は、ウェブクライアントだけでなく、非ウェブクライアントも考慮しています。OAuth 2.0は、ウェブアプリケーション、デスクトップアプリケーション、携帯電話、テレビ/コンソール、そしてAPIベースのサービスなどのブラウザベースでないアプリケーションのための特定の認証フローを提供します。また、実装がはるかに簡単で、扱いやすく、強力な認証を提供します。

職務の分離

OAuth 2.0は、リソースの配信とユーザー認証の処理を分離します。物理的に別のサーバー、または異なるドメイン名が、両方の役割を担うことができます。したがって、システムの各部分は独立してスケールします。したがって、認証サーバーはクライアントIDとシークレットを要求しますが、APIサーバーはアクセストークンのみを受け入れます。その結果、データベースはAPIサーバーとのデータ共有を回避します。これらは、新しい標準を大企業にとってより適用可能にします。これは、これらのシステムを独立して、異なるチームによって、そして異なるタイムラインで行うことを可能にするためです。

ベアラートークンと廃止された暗号化要件

OAuthは、APIの簡単な使用と良好なセキュリティ実践のバランスを実現します。ベアラートークンの使用は、OAuth 1.0標準の暗号署名の複雑さを排除することで、OAuthの実装を簡素化します。OAuth 2.0では、リクエストにトークン自体のみが必要です。

二要素認証

OAuthは、アカウントの開示に対して、よりセキュリティが低いシングルファクタ認証方法を使用しました。シングルファクタ認証は、ハッカーがアクセスを得るために必要な情報を1つだけ取得するだけで容易に侵害される可能性があります。しかし、OAuth 2.0は、ユーザーにアクセスを与えるためにより多くの認証レベルを要求します。それはトークン化と二要素の性質を使用してユーザーアカウントを保護します。

## OAuthが重要な理由は何ですか?

洗練されたウェブアプリケーション、モバイルアプリ、そしてユニークなビジネスモデルが登場しました。ユースケースの進化は、従来の認証システムが不十分である新しいシナリオを生み出しています。これらのシナリオの多くでは、リクエストやアクションを実行するために、サーバーやクライアントが複数のサーバーと通信(接続)する必要があります。その結果、複数の信頼できる当事者間でデータを共有し、アイデンティティを連携するための新しいソリューションを提供する必要性が高まっています。OAuthは、認証に関連する課題を解決することを目指す強力なセキュリティフレームワークです。したがって、アプリケーションやウェブサイトにOAuthを統合することが重要です。その理由はこちらです:

共有している間でもサーバー情報を保護します

OAuthプロトコルは、ウェブサーバーとブラウザ間のデータがプライベートに保たれることを保証するためにSSL(Secure Sockets Layer)に依存しています。実際のところ、それは組織のウェブサイト認証の重要な部分であり、ユーザーの資格情報を保護します。

トークン化はユーザーデータへのアクセスを限定的にのみ許可します

クレジットカード情報や医療記録などの機密情報は、それぞれトークンIDが割り当てられ、リモートで保存されます。加盟店は実際のデータではなく、トークンを受け取ります。したがって、共有される情報はプライベートのままです。まだ医療記録やパスワード、クレジットカード番号へのアクセス権を持っていない第三者でも、トランザクションのためにトークンを検証できます。

OAuthはシングルサインオン(SSO)の使用を可能にします。

SSOは簡単なアクセスを保証し、リスクを管理し、ユーザーに自分のデータのコントロールを与えます。これは、1組のログイン情報だけで複数のアプリケーションにアクセスできるようにすることで、ユーザーの士気と生産性を向上させます。SSOはユーザーの認証情報を統合し、ユーザーのログインプロセスを合理化します。これにより、多数のパスワードを管理する手間や、オンラインサービスを使用する際に同じ情報を繰り返し入力する必要がなくなります。

ユーザーが第三者のサービスが自分のリソースに対して行えることを制御できるようにします

従来のプロセスでは、情報を共有するために第三者のウェブサイトと認証情報を共有する必要があります。しかし、OAuthは第三者を制限し、ユーザー設定の変更やユーザー認証情報の変更、アカウントへのユーザーアクセスのブロックなど、特定の悪意のある行為を防ぎます。

## 結論

OAuth(オープン認証)は、可能な限りユーザー情報をデータ侵害から保護します。OAuth 1.0の最初のプロトコルはOAuth 2.0に書き換えられました。サイバーセキュリティ業界は、認証のための最も安全なオプションとしてOAuth 2.0を広く採用しています。完璧な認証システムは存在しませんが、OAuthは最良の選択肢の一つです。Facebook、Twitter、LinkedIn、Google、Amazon、Instagram、GitHubなどのサイトは、認証と認可のための主要技術としてOAuthを使用しています。