OIDCとは
OIDCはOpenID Connectの略。
簡単にいうと、OAuthの仕組みに認証機能を追加したものです。
OIDCは、OAuthの認可フローを活用しながら、ユーザーの身元を安全に確認し、その情報を連携先のサービスに提供することを可能にする。これにより、ユーザーは一度認証を行えば、複数のサービスにシームレスにログインできるSSOを実現できる。
OIDCは、現代のWebサービスにおいて、安全かつ効率的なユーザー認証を実現するための非常に重要なプロトコルである。
OAuthとは
他のサービスにアクセス権を委ねるための仕組み。
つまり、認可を行うためのもの。
OAuthには認証の機能はない。
そこで、OAuthに認証機能を追加したのが、OIDCとなります。
認証とは
「あなたは誰ですか?」を証明するプロセス。
例えば、IDとパスワードを入力してログインする行為が認証に該当する。
認可とは
そのユーザーが特定の操作を実行していいかを判断する仕組み。
例えば、管理者だけがユーザー一覧を見ることができるとか、一般ユーザーは記事の削除ができないのような許可。
プロトコルとは
コンピュータやネットワーク上で、異なる機器やソフトウェア同士が情報をやり取りする際に従うべき、あらかじめ定められた手順や規約の集合のこと
OIDCの主要な登場人物
エンドユーザー
サービスを利用する本人。
OpenIDプロバイダー(OPとも呼ばれる)
ユーザーの認証を行うサービス。
ユーザーのIDを管理し、認証が成功したことを証明する。
代表例は、Google、Facebook、Microdoftなど
リライングパーティ(RPやクライアントアプリケーションとも呼ばれる)
OpenIDプロバイダーによって認証されたユーザ情報を利用するアプリケーションやWebサイト。
OIDCの流れ
- ユーザーがRPへのログインを試みる
例えば、「Googleでログイン」ボタンなどを押して、RPにログインしようとする - RPがOPに認証を要求する
OpenIDプロバイダーに対して、ユーザーの認証を要求する - OPがユーザーに認証を要求する
OpenIDプロバイダーは、ユーザーを認証ページにリダイレクトし、ユーザーにログインを促す - OPが認証コード(またはトークン)をRPに発行する
ユーザーの認証と同意が成功すると、OPはRPに認証コード(または直接IDトークンとアクセストークン)を返す - RPが認証コードを使ってIDトークンとアクセストークンを取得する
RPは受け取った認証コードをOPのトークンエンドポイントに送信し、その引き換えにIDトークンとアクセストークンを受け取る- IDトークン
- JWT(JSON Web Token)形式で、ユーザーの認証情報(誰がいつ認証されたかなど)や要求されたユーザーの属性情報(名前、メールアドレスなど)が含まれている
- Pによってデジタル署名されているため、改ざんを検知できる
- RPはIDトークンを検証することで、ユーザーが正しく認証されたことを確認する
- アクセストークン
- 保護されたリソース(例:ユーザーのプロフィール情報、APIなど)にアクセスするための権限を表する
- RPはアクセストークンを使用して、必要に応じてOPやリソースサーバーから追加のユーザー情報を取得できる
- IDトークン