こんにちは!スタッフ19号です!
前回お話しした認可認証の時に出てきた「OpenIDConnect」について今回は調べたことをお伝えしようかなと思います!
OpenIDConnectとは?
OpenID Connectとは、サービス間で、利用者の同意に基づきID情報を流通するための標準仕様です。 利用者がOpenID提供サイトに登録したID情報を使って、ほかのOpenID対応サイトにログインすることが可能になります。
氏名、住所、カード番号といった属性情報を、本人の承認のもとにサイト間で連携することにより、利用者はこれまでサイトごとにバラバラに登録していたID情報を、一元管理できるようになります。
前回調べた「OAuth」と似ている・・・?と思ってさらに調べると、次の内容が出てきました。
双方の処理フローが似ているのは、OpenID Connect が OAuth 2.0 の拡張仕様だからです。 OAuth 2.0 はアクセストークンを発行するための処理フローを定めていますが、それを流用し、ID トークンも発行できるようにしたのが OpenID Connect なのです。 これについて、OpenID Connect のウェブサイトでは、「OpenID Connect 1.0 は OAuth 2.0 プロトコル上のシンプルなアイデンティティーレイヤーである」と説明したり、「アイデンティティー・認証と OAuth 2.0 を足したものが OpenID Connect である」と説明したりしています。
前回の振り返りをすると、「OAuthは認可のものなので、認証に使用すると危険」ということで、認証を安全にするために何かないのかなというところで出てきたのが「OpenIDConnect」でしたね。
「OpenIDConnect」は、OAuthの拡張仕様で、認証も出来るようになったものみたいですね。
では、具体的にどのような処理フローなのか見てみたいなと思います。
OpenIDConnectの処理フロー
分かりやすく、前回お借りした図を使用して説明されている方が「OpenIDConnect」についても図を載せていたので、今回もお借りしますね。
https://solution.kamome-e.com/blog/archive/blog-auth-20221108/
比較しやすいように前回も載せたOAuthの図ももう一度載せます。
https://solution.kamome-e.com/blog/archive/blog-auth-20221108/
すごく似ていますね(笑)
では、どこが違うか見ましょう。
図を見ると、OAuthにはなかった「IDトークン」というのが登場しています。
では、IDトークンとは何かを調べましょう。
IDトークンとは?
- IDトークンは認証の結果得られるトークン。
- IDトークンには、ヘッダー、ペイロード (本文)、署名の3要素が入っている。※¹
- ユーザーが認証されたことを証明するトークンなので、認証後のその先のリソースサーバーにアクセスするための認可には使用できない。
- IDトークンを不正に発行、取得されてしまうと不正にログインされてしまいます。IDトークンは共通のID・パスワードを複数のサービスで使用できるようにするものなので、IDトークンがあれば複数のサービスで同時に不正アクセスが可能となってしまいます。そのため、IDトークン発行許可は適切に行う必要があるという特徴もある。
※¹ヘッダーと署名は、トークンの信頼性を確認するために使用されます。
ペイロードには、クライアントによって要求されたユーザーの情報が含まれます。
上記のようなものになります。
では、図ではこのIDトークンはどのように使われているのか見てみます。
- webサービスやアプリなどのクライアントからIDトークンの発行を要求してくる。
- この要求に対して、IDプロバイダーはユーザーへIDトークンを発行の許可を問う。
- ユーザーから許可がでたら、ユーザーのIDとパスワードが含まれているIDトークンをクライアントに発行する。
- リソースサーバーではクライアントが持っているIDトークンを使用し、認証を行う。
このようなフローになります。
また、OpenIDConnectではIDプロバイダーが認可サーバーの役割を兼ね備えているため、IDトークンとアクセストークンを同時に発行することも可能です。
以上がIDトークンについてになります。
調べる前よりは、だいぶOpenIDConnectについて分かった気がします。
これからも気になったものが出てきたら、色々調べて、お伝えしていきますね。
最後に、OAuthとOpenIDConnectの違いの分かりやすい図を見つけたので、参考に載せますね。
https://www.macnica.co.jp/business/security/manufacturers/okta/blog_20210901.html
では!19号でした!