Webサービスのセキュリティ手段に「認証」と「認可」というものがあります。これらは異なる概念ではあるものの、言葉が似ていることもありよく混同されることがあります。認証と認可をしっかりと切り分けた上で、併用していく理由について説明します。
認証
認証とは英語では"Authentication(AuthN)"といい、「相手が誰なのか」を特定するものです。すなわち、利用者の確認・特定のことを言います。認証には以下のようにいくつか種類があります。
-
知識情報による認証 パスワードやPINコードなど、利用者しか知りえない知識を用います。
-
生体情報による認証
指紋、顔、静脈、声紋など、利用者が生まれ持っており物理的に備えているものを用います。 -
所持情報による認証
鍵、SMS、デバイス、身分証明など、利用者が物理的に所持しているものを用います。
従来はこれらのうちのひとつを使った認証でしたが、セキュリティの観点からパスワードとPINを組み合わせた二要素認証を経て、最近ではこれらの要素を組み合わせた「多要素認証(Multi-Factor Authentication, MFA)」が主流となってきています。
認可
認可とは英語では"Authorization(AuthZ)"といい、対象物に対して利用する権限を与えることです。すなわち、リソースにアクセス権を与えることを指します。
日本語でも英語でも似たような言葉なので、しっかりと整理しましょう。
例
ITリソースで話をすると難しいので、実際の生活の中での例にしてみましょう。
- 認証
コンサートやライブのチケットを買うために、身分証明書の提示があったとしましょう。買う人の本人確認をしています。これが認証です。 - 認可
一方で、コンサートやライブのチケットを持っていれば会場に入ることができます。正規ルートで買おうが、転売ヤーから買ってもチケットを持っていれば入ることができてしまいます。 - 認証+認可
最近では認証と認可を組み合わせて、チケット購入時にマイナンバーを登録し、そのマイナンバーがないと入場ができないという仕組みも出てきています。すなわち、認証と認可の組み合わせです。他には、スタッフが首から下げている写真・名前付きの通行パスも、出入口でしっかりと確認していれば、それが認証となり、そのパスには入れる区域が指定されているのであれば、その区域にのみ入れる、つまり区域に入れる認可が与えられていることになります。
ITの世界でも組み合わせて使うことが多いです。
プロトコル
認証プロトコル
-
Kerberos
エンタープライズ向けに設計されたチケットベースの認証システムで、Windows Active Directoryの基盤技術でもあります。 -
SAML
主にエンタープライズ向けに利用される認証プロトコルで、XMLベースでSSO(Single Sign On)を行うために設計されました。 -
OpenID Connect
OAuth 2.0を拡張し、JWTベースのIDトークンを利用した認証+認可のプロトコルです。
認可プロトコル
-
OAuth
モバイルやWebアプリに向けに設計されたトークン方式による認可プロトコルです。API認証などでよく利用されます。 -
GNAP
OAuth 2.0の後継として策定が進められているプロトコルです。OAuthの思想は継いでいるものの互換性はありません。
それぞれのプロトコルの詳細は今後展開していければと思います。

