対象の読者
- OAuthの基本的な概念を学びたい人
- OpenID Connectの基本的な概念を学びたい人
- OAuthとOpenID Connectの違いがわからない人
はじめに
OAuthとOpenID Connectを学ぶ前に、まずは認証と認可について理解することが重要です。
- 認証
認証とは、あなたがあなた自身であることを確認するプロセスのこと。 - 認可
認可とは、あなたがアクセスできる情報や機能を決定するプロセスのこと。
OAuth(Open Authorization)
OAuthは、ウェブサービスやアプリケーションにおける認可を提供するプロトコルで、主に特定サービスのデータへのアクセス権限の管理を可能にします。このプロトコルは、外部のクライアント(アプリケーションやサービス)がユーザーのリソースへのアクセスを許可するための仕組みを提供します。例えば、ユーザーが別のアプリケーションを通じてGoogleのアカウントにアクセスを許可する際、OAuthが活用されます。
OAuthを使用することで、ウェブアプリケーションがユーザーのパスワードを保持する必要がなくなり、代わりにセキュアなアクセストークンが使用されるためセキュリティが向上します。ユーザーは自身の認証情報を直接提供することなく、外部アプリケーションにアクセス権を委譲することが可能です。
認証コードは、ユーザーの認証を確認するために使用され、認証コードがアプリケーションに渡される時点でユーザーが正常に認証されていることが確認されます。成功した認可により、SNSプロバイダなどからアクセストークンが発行され、これを用いてユーザーが認可した情報にアクセスできます。アクセストークンが無効になった場合、リフレッシュトークンを使用して新しいアクセストークンを取得できます。
※OAuthは主にアクセス権限に焦点を当てており、厳密な認証には適していません。
※ユーザーの認証に重点を置く場合は、認証に特化したプロトコルであるOpenID Connectを使用することが推奨されます。
OpenID Connect
OpenID ConnectはOAuth2.0の上に構築されており、認証と同時にユーザー情報を取得できるようになっています。この拡張により、外部クライアントアプリケーションは認証だけでなく、ユーザーに関する情報も取得可能です。
IDトークンはOpenID Connectで導入された特別なトークンであり、認証情報を提供します。IDトークンにはユーザーの識別情報(ユーザーIDなど)が含まれています。
クライアントアプリケーションはIDトークンを使用してユーザーを認証し、同時にユーザー情報を取得できます。これにより、外部アプリケーションはユーザーが誰であるかを確認し、ユーザーに関連する情報にアクセスできます。
OpenID Connectは認証のセキュリティと信頼性を向上させるために設計されており、アクセストークンだけでなくIDトークンも使用して認証を行います。これにより、認証の信頼性が向上し、クライアントアプリケーションはIDトークンを検証してユーザーの認証が正当であることを確認します。これにより、アプリケーションは認証されたユーザーに対して信頼性のあるサービスを提供できます。
OAuthとOpenID Connectの違い
OAuthは、主にアクセス権限の付与と管理に焦点を当てたプロトコルで、クライアント(アプリケーションやサービス)がユーザーの代わりにリソースにアクセスするための仕組みを提供します。OAuth 2.0では、認可コード、アクセストークン、リフレッシュトークンなどを使用して、ユーザーが認可した範囲内でのアクセスを可能にします。
OpenID Connectは、OAuth2.0をベースにして認証と認可のためのフレームワークを提供するプロトコルです。OIDCは、OAuth 2.0の機能に加えて、ユーザーの認証を確認するためのIDトークンを導入しています。これにより、クライアントアプリケーションはユーザーが誰であるかを確認し、ユーザーの情報を取得できます。