OAuthとOpenID Connectについて~仕組みや特徴など解説~

OAuthとOpenIDConnectについて

「認証」と「認可」はセキュリティを強化する上で欠かせない技術です。認証と認可を実現する技術として、OAuthやOpenID Connectがあります。OAuthは2012年に制定された認可のためのプロトコルです。このOAuthの拡張仕様として開発されたのが、認証のためのプロトコルであるOpenID Connectです。
本記事では、OAuthとOpenID Connectの仕組みや特徴、違いについて解説します。

認証と認可とは

OAuthやOpenID Connectを理解するためには、まず認証と認可について理解する必要があります。

「認証」とは、通信の相手が「誰(何)であるのか」を確認・特定することです。認証には、ID・パスワード(知識情報)、顔や指紋(生体情報)、SMS(所持情報)による認証などがあります。「認可」は、特定の条件下において、対象物(リソース)を利用可能にする(アクセス)権限を与えることです。
認証と認可を別で行うことで、全てのユーザーではなく限られたユーザーにのみアクセス権限を付与することができ、セキュリティを強化することに繋がります。

※認証と認可の違いについて、詳しくはこちらをご覧ください。

OAuthとは?

OAuthとは、認可を行うプロトコルです。
OAuthでは、アクセストークンを使用してユーザーがリソースサーバーの資源を使用していいかを検証します。アクセストークンは認可に使われるもので、どのようなアクセス権限を持っているのかを示すことができます。OAuthでは、信頼関係のあるサービス同士でのセキュアなアクセス権限の移譲が可能です。

仕組み

OAuthの仕組みについて解説します。

Webやアプリケーションとリソースサーバーとの間でデータをやり取りするとき、APIを通してデータの受け渡しが行われます。
APIとは、プログラムを介してアプリケーションやソフトウェアの資源を使用するための接続口のことです。これによって、ソフトウェア機能を共有することができます。ただ、このAPIが保護されていなければ、APIを介してデータを不正に抜き取ることができてしまいます。また、情報漏洩や悪用などのセキュリティ上の問題が発生することも想定されます。このAPIを保護するために誕生した仕組みがOAuthです。OAuthは、リソースサーバーの資源を使用していいかどうかを認可することで、APIを守ります。

OAuthの流れは、以下の図解の通りです。

まず、Webサービスやアプリなどのクライアントから認可サーバーに対してアクセストークンの発行を要求します。認可サーバーとは、アクセストークンを生成するサーバーです。認可サーバーは、アクセストークンの発行の要求をされたら、ユーザーに対してアクセストークンを発行していいかどうか問います。ユーザーからの許可が出たら、認可サーバーはアクセストークンを生成します。そして、アクセストークンをクライアントに対して発行します。クライアントは発行されたアクセストークンを持ってデータの委譲を要求します。リソースサーバーは、APIを介してアクセストークンが正しいものか検証します。認可されれば、APIを介してデータが渡されます。このアクセストークンの要求とその返答を標準化した技術がOAuthです。

OAuthの流れ
OAuthの流れ

特徴

OAuthの特徴として、アクセストークンを使用することが挙げられます。                          
アクセストークンを使用することで、IDとパスワードを使用せずに済みます。そのため、アクセス権限の委譲が容易になります。アクセストークンには、有効期限を付けることも可能です。もしアクセストークンを不審者が手にしても、有効期限が過ぎてしまえば不正アクセスができないようになっています。また、ユーザーが必要な分のみ権限を与えることができ、柔軟な対応が可能となります。

しかし、OAuthではアクセストークンを不正に取得されてしまうと、リソースサーバーを守ることができないなどの特徴もあります。不正な取得を避けるためには、ユーザーが安易にアクセストークンの発行を許可しないことも大切です。

OpenID Connectとは?

OpenID Connectとは、認証を行うプロトコルです。
OpenID Connectでは、IDトークンを使用し認証を行います。IDトークンとは、認証のために使われるものです。これを持っていることで、ユーザーがどこの誰であるのかを示すことができます。OpenID Connectでは、サービスが異なる場合でもIDトークンを使用することで共通のID/パスワードを取り扱うことができます。

仕組み

OpenID Connectの仕組みを解説します。

まず、webサービスやアプリなどのクライアントからIDトークンの発行を要求されます。この要求に対して、IDプロバイダーはユーザーへIDトークン発行の許可を問います。ユーザーから許可がでたら、ユーザーのID/パスワードが含まれているIDトークンをクライアントへ発行します。リソースサーバーではクライアントが持っているIDトークンを使用し、認証を行います。

OpenID Connectの流れ
OpenID Connectの流れ

OpenID Connectとは、IDプロバイダーとクライアント間でのIDトークンの要求と発行を標準化したものです。先ほど説明したOAuthのアクセストークンの要求とその発行を認証用に開発されたのが、OpenID Connectです。さらに、OpenID ConnectではIDプロバイダーが認可サーバーの役割を兼ね備えています。そのため、IDトークンとアクセストークンを同時に発行することも可能です。

特徴

OpenID Connectには、従来のOpenIDを使用した認証システムに比べて導入しやすいという特徴があります。従来の認証システムでは、導入の際に高度な技術が求められていました。しかし、OpenID Connectは簡単なコードをサービスに書き入れるだけで導入が可能です。OpenID Connectは、導入が容易であるためGoogleやMicrosoft、Salesforceなどでも使用されています。

また、OpenID Connectを導入することでID/パスワードの管理が容易になり、迅速な認証も実現します。

しかし、不正なIDトークンの発行/取得をされてしまうと、不正ログインが発生してしまいます。IDトークンは、共通のID・パスワードを複数のサービスで使用できるようにするものなので、IDトークンがあれば複数のサービスで同時に不正アクセスが可能となってしまいます。そのため、IDトークン発行許可は適切に行う必要があります。

特徴まとめ
  • 従来のOpenIDを使用した認証システムに比べて導入しやすい
  • ID/パスワードの管理が簡単になる
  • 迅速な認証も実現できる
  • ただし、1つの不正が発生すると複数のサービスへの不正アクセスが広がってしまう可能性がある

OAuthとOpenID Connectの違い

OAuthとOpenID Connectの大きな違いとして、認証を実現するプロトコルか、認可を実現するプロトコルかという点があります。

OAuthは認可のためのプロトコルです。そのため、認可のために使用するアクセストークンを発行します。これにより、アクセス権限を委譲し、APIの保護ができます。

それに対して、OpenID Connectは認証のためのプロトコルです。そのため、認証のために使用するIDトークンを発行します。IDトークンには、ユーザー認識情報が含まれており、異なるサービスでも共通のID・パスワードを使用することが可能です。

まとめ

本記事では、OAuthとOpenID Connectについて解説しました。どちらも、認証と認可を実現するためには欠かせない技術です。特にOpenID Connectは、OAuthの技術を応用し、OpenIDを簡単に使えるようにした技術です。使用上の注意はあるものの、OpenIDを使用した認証を容易に実現できるので、これからも継続した使用が期待できるでしょう。

かもめエンジニアリングでは、OpenID Connectに連携可能な「Keygateway」を提供しています。
「Keygateway」はVPNに代わるセキュリティとして、ゼロトラストを採用したセキュリティモデルを基に構成されています。

Keygatewayは、用途や導入規模に応じて「C1」と「T1」の2つのラインナップをご用意しています。

Keygateway C1は、T1の認証統合機能を包含しながら、VPNに代わるゼロトラスト型のリモートアクセス基盤を丸ごと提供するソリューションです。
社外からの安全なアクセス環境の構築から、認証・認可の一元管理まで、包括的なセキュリティ対策を実現します。

Keygateway T1は、既存のシステムやアプリケーションをSAML対応に変換し、シングルサインオン(SSO)や認証統合をスムーズに実現するためのツールです。
現行の環境を大きく変えることなく、認証基盤の強化・統合を図りたい組織に適しています。

それぞれの詳細は、以下のパンフレットをご覧ください。

また、貴社のシステム環境を踏まえたユースケースのご紹介や、必要なセキュリティ対策についてご説明する無料相談もご用意しております。導入を前提としたものではございませんので、情報収集の段階でもお気軽にご利用いただけます。
ご希望の際は、ぜひ下記のお問い合わせフォームよりご連絡ください。

事業・商品・サービスに関するお問い合わせ

製品に関するお問い合わせはこちら

※フリーメールでのお問い合わせは受け付けておりません。

必須
必須
必須
必須
必須
必須
必須