【情シス基礎知識】OpenID Connectとは?

クラウドサービスの利用が企業でも一般化しつつある昨今、新しいサービスを使うときに、氏名やメールアドレスなどをわざわざ入力しなくても、「Facebook IDでログインする」といった表示を見かけたことはありませんか? ここ最近、そんなID認証サービスの利用が広まっています。そのID連携を支えるOpenID Connect。その認証の仕組み、OAuthとの違い、認可と認証の違いなどを解説します。

APIがあふれる時代、開発も様変わり

2019年の今、スマートフォンが世界的に普及し、数多くの新たなWebサービスが日々リリースされています。世界中でたくさんの新サービスがバンバン登場するその裏には、さまざまなAPIが公開されるようになりサービス開発がしやすくなっているという背景があります。
GoogleやFacebook、Amazonなどの大手IT会社が自社プラットフォーム上のAPIを公開しており、誰でもそれを利用して新しく付加価値のあるサービスを作ることができるのです。アプリをゼロからスクラッチで作らなければならない時代はもう過去のモノといってもよいでしょう。

さて、こうしたアプリで障壁となるのが、ユーザー認証です。
例えば、様々なSNS上の投稿を一括して閲覧できるアプリでは、アプリの中で複数のSNSサービスへユーザー認証を行う必要があります。この際、安全にユーザー認証を行うことができる技術の一つとして「OpenID Connect」が注目されています。

OpenID Connectとは

「OpenID Connect(オープンアイディー・コネクト)」とは、サードパーティーのアプリからGoogleやFacebookなどの認証サーバーを使ってユーザー認証を行うためのプロトコルです。
概要としては、以下のようになります。

ユーザーはアプリにログインするとき、そのアプリは認証クライアントとして認証サーバー側に認証を要求します。認証サーバーはユーザー認証を行い、必要なIDトークンを発行してクライアントに返します。このIDトークンとは、アクセスするための認証情報のことです。

このとき、認証クライアントとなるアプリをRP(Relying Party)、認証サービスを行う事業者をOP(OpenID Provider)といいます。
こうして得られたトークンを用いて、RPはAPI(Google APIsやFacebook Graph APIなど)を利用することができます。

認証の仕組み

ここで認証がどのように行われているのかもう少し詳しく見てみましょう。

1.クライアントアプリ(RP)から認証サーバー(OP)へ認証のリクエストが送られます。
2.リクエストがあった際、OPはユーザーに認証情報を与えてもいいかの確認を行います。
3.ユーザーはアプリにアクセスを許可するかの確認を行います。また、アカウントにサインインするなど、ユーザーの本人確認も行います。
4.確認でOKであれば、OPはRPにIDトークンを発行します。
5.得られたトークンを使い、外部APIへのアクセスが可能になります。

IDトークンが、安全なアクセスを実現する

IDトークンは、APIにアクセスするための情報が入っています。OpenID Connectでは、IDトークンを使うことでサードパーティーアプリから個人アカウントを守っているのです。

ユーザーは、サードパーティーのアプリを使う際に、APIアクセスに必要だからといって他社サービスのアカウント名・パスワードをそのまま渡すのは危険な行為です。数あるアプリの中には、そうした権限を持って勝手にアカウントを使用してしまったり不正行為に利用したりする悪意のある者も少なからずいるのです。悪意がなくても、アプリ会社のセキュリティ管理が甘ければパスワード漏れや個人情報漏えいなどの被害に遭うこともあります。
こうした思わぬ被害を避けるため、ユーザーは必要な認証情報のみ=IDトークンをアプリに与えます。

OpenID Connectで使われているIDトークンは、Webの世界的な標準規格であるRFC 7519 (JSON Web Token) で定められています。また、このIDトークンには署名が付与されています。署名は暗号化され、さらにトークンの中にはユーザー情報の他にもトークンの発行者、トークン有効期間などの情報を含めることができます。トークン自体も暗号化ができるのでユーザー情報のやりとりがより安全に行えます。

OAuthとの違いは何か?

OpenID Connectは、OAuth2.0規格の拡張仕様です。OAuthとは、アクセス認可を行うプロトコルで、前章で紹介したOpenID Connectとほぼ同じ仕組みで認可処理を行います。
両者の違いは、「ユーザー認証」を行えるのか「アクセス認可」のみかの違いです。

認可?認証? その違いとは!

ここで押さえておきたいのが、「認証」と「認可」がどう違うのか、ということです。

「認証」というのは、その人が『誰であるか』『本人であるか』を確認することです。
例えば、Webサービスログインの際、アカウント・パスワード・認証コード・メールアドレスなどの本人確認のための情報が決められています。鈴木一郎さんはアカウント名やパスワードを入れ、さらに電話番号に送られてくる認証コードを入れるなどして「わたしは本物の鈴木一郎です」ということを証明すれば、認証されてログインができます。

「認可」というのは、その人が『権限を持っているか』を確認することです。こちらは例えば、サーバーアクセスしてきたユーザーがアクセスOKとなっているかどうかをチェックすることです。鈴木一郎さんは、アクセス権有りのリストに登録されているかどうかのチェックを受けたりアクセスパスワードを入れるなどして、「権限を持っています」ということを証明すれば、認可されてアクセスができます。この際、鈴木一郎さん本人かどうかは問われず、あくまでも『権限があるか」のチェックなのです。

もちろん、認証と認可の両方を行わないと、厳密なアクセス管理はできません。OpenID Connectでは、IDトークンを使って認証と認可の両方を行うことで、OAuthよりもセキュリティを強固にした規格なのです。

OpenID Connectのメリットとは

OpenID Connectは、ユーザーにとってもアプリ開発会社にとってもメリットがあります。ユーザーにとっては自分のパスワードを守ったうえでさまざまなサードパーティーのアプリを利用することができるし、ひとつのアカウントで複数のサービスを利用できるので個人のパスワード管理がしやすくなります。
アプリ開発会社にとってはアカウント情報を自社で管理しなくていいので、運用コストが下げられます。そしてAPI利用がしやすくなり、さまざまな新しいサービスを作りやすいのです。

一つのアカウント情報を持って複数のサービスで使い回せる「シングルサインオン(SSO)」は、これまでもSAMLなどの規格によって実現されてきました。但しSAMLでは、ユーザーのアクセスのタイミングとは関係なく事前にIdPと呼ばれる認証サーバー側(OpenID ConnectでのOP)とRP間で相互の情報を持ち合い、「安全な情報やりとりができる関係である」設定を準備する必要がありました。しかしながら、OpenID Connectでは、ユーザーのアクセスのタイミングなど動的に、且つ、安全な情報交換ができるのです。そのため、いろいろなサービスで使い回しのしやすいOpenID Connectが注目されているといえます。

OpenID Connectを利用したソーシャルログインサービス

OpenID Connectを利用したログインサービスはRP側では「ソーシャルログイン」と呼ばれます。上で例を挙げたGoogleやFacebook以外にもYahoo! JAPANやLINEなどの多くのソーシャルアカウントとの連携が可能で、会員登録途中のユーザー離脱を防ぎ、ID忘れによるサービス継続率の低下を防ぐとして多数の企業に導入されています。
OP側も積極的にRP側への連携を働きかけ、例えばLINEではRP側のユーザーログインをLINE IDで代替するだけでなく、LINEを使っているユーザーへの関連情報配信をすることで新規獲得や顧客の定着を狙えるサービスを提供しています。
こうした関連サービスの拡充もあって、今後ますますOpenID Connectの利用は広がっていくことが予想されます。

 

【執筆:編集Gp 星野 美緒】

関連記事

カテゴリー:

ナレッジ情シス知恵袋

情シス求人

  1. チームメンバーで作字やってみた#1

ページ上部へ戻る