認証と認可

認証と認可はしばしば同じ意味で使われますが、根本的に異なる機能を表します。この記事ではこの2つを比較対照し、相互補完的にアプリケーションを保護する仕組みを説明します。

認証と認可とは何か?

簡単に言えば、認証はユーザーが誰であるかを検証するプロセスで、認可はそのユーザーが何にアクセスできるかを検証するプロセスです。

これらのプロセスを現実世界の例を用いて比較してみましょう。空港のセキュリティチェックを通るとき、私たちは身分証明書を提示してIDを確認(認証)します。そして搭乗口に着いたら、搭乗券を係員に提示することで、予約した便への搭乗を許可(認可)してもらい、飛行機に乗ることができます。

認証と認可

以下は認証と認可の違いを示した簡単な概要です。

認証 認可
ユーザーが本人かどうかを判断します ユーザーがアクセスできるもの、できないのものを判断します
資格情報を検証するためにユーザーにチャレンジします(たとえば、パスワードやセキュリティ質問への回答を通して) ポリシーとルールを介してアクセスを許可するかどうかを検証します
通常、認可の前に行われます 通常、認証に成功した後に行われます
一般的にIDトークンを介して情報を伝達します 一般的にアクセストークンを介して情報を伝達します
一般的にOpenID Connect(OIDC)プロトコルによって管理されます 一般的にOAuth 2.0フレームワークまたは中央管理の認証プラットフォームによって管理されます
例:会社の従業員は、会社のメールにアクセスする前にネットワークを介して認証する必要があります。 例:従業員が正常に認証したら、システムはこの従業員がアクセスできる情報を判断します。

手短に言うと、リソースへのアクセスは認証と認可の両方によって保護されています。IDを証明できなければ、リソースへのアクセスは許可されません。IDを証明できたとしても、そのリソースの権限が付与(認可)されていない場合は、やはり、アクセスが拒否されます。

Auth0では、Auth0 DashboardManagement APIを使って構成できるパスワードレス多要素認証MFA)、シングルサインオン(SSO)といった、認証用の製品やサービスを提供しています。認可用には、Role-Based Access Control(RBAC)とFine-grained AuthorizationFGA)を提供しています。