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

「認証」と「認可」はセキュリティを強化する上で欠かせない技術です。認証と認可を実現する技術として、OAuthOpenID 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トークンは共通のID・パスワードを複数のサービスで使用できるようにするものなので、IDトークンがあれば複数のサービスで同時に不正アクセスが可能となってしまいます。そのため、IDトークン発行許可は適切に行う必要があるという特徴もあります。

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)や認証統合をスムーズに実現するためのツールです。
現行の環境を大きく変えることなく、認証基盤の強化・統合を図りたい組織に適しています。

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

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

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

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

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

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