認証と認可
認証と認可はしばしば同じ意味で使われますが、根本的に異なる機能を表します。この記事ではこの2つを比較対照し、相互補完的にアプリケーションを保護する仕組みを説明します。
認証と認可とは何か?
簡単に言えば、認証はユーザーが誰であるかを検証するプロセスで、認可はそのユーザーが何にアクセスできるかを検証するプロセスです。
これらのプロセスを現実世界の例を用いて比較してみましょう。空港のセキュリティチェックを通るとき、私たちは身分証明書を提示してIDを確認(認証)します。そして搭乗口に着いたら、搭乗券を係員に提示することで、予約した便への搭乗を許可(認可)してもらい、飛行機に乗ることができます。
認証と認可
以下は認証と認可の違いを示した簡単な概要です。
認証 | 認可 |
---|---|
ユーザーが本人かどうかを判断します | ユーザーがアクセスできるもの、できないのものを判断します |
資格情報を検証するためにユーザーにチャレンジします(たとえば、パスワードやセキュリティ質問への回答を通して) | ポリシーとルールを介してアクセスを許可するかどうかを検証します |
通常、認可の前に行われます | 通常、認証に成功した後に行われます |
一般的にIDトークンを介して情報を伝達します | 一般的にアクセストークンを介して情報を伝達します |
一般的にOpenID Connect(OIDC)プロトコルによって管理されます | 一般的にOAuth 2.0フレームワークまたは中央管理の認証プラットフォームによって管理されます |
例:会社の従業員は、会社のメールにアクセスする前にネットワークを介して認証する必要があります。 | 例:従業員が正常に認証したら、システムはこの従業員がアクセスできる情報を判断します。 |
手短に言うと、リソースへのアクセスは認証と認可の両方によって保護されています。IDを証明できなければ、リソースへのアクセスは許可されません。IDを証明できたとしても、そのリソースの権限が付与(認可)されていない場合は、やはり、アクセスが拒否されます。
Auth0では、Auth0 DashboardやManagement APIを使って構成できるパスワードレス、多要素認証(MFA)、シングルサインオン(SSO)といった、認証用の製品やサービスを提供しています。認可用には、Role-Based Access Control(RBAC)とFine-grained Authorization(FGA)を提供しています。