AuthenticationとAuthorizationが紛らわしいのでメモ.
注意: "ユーザ"は、人とは限りません."サーバ"は、提供者(機械or人)です.
追記 2020/11/05
ritouさんにコメントいただきましたので、情報を修正しました! (詳しくは修正履歴にてご確認ください)忘れがちな Identification 識別
サーバがユーザを特定すること.
入力されたIdentifier(ID, 識別子)から、ユーザを特定する.
Authentication 認証
ユーザが本物かどうかの確認. 識別じゃないよ.
ユーザーが誰なのか特定したあとで、本当にその人なのか確認すること.
例えば、ユーザにCredential(パスワードとか認証に使うものたち)を渡してもらって、一致すればログイン.
Authorization 認可
サーバがユーザに適切な権限を与えること.
例えば、SQLのgrant文みたいなもん.
見せるだけか、投稿も許可するか.
認証と認可って分ける必要ある?
ある(と思ってる.).
アカウントを持たないユーザにサービスを提供する際は、認可のみでOK.
アカウントを持つユーザのみが対象でも、非課金サービスと課金サービスが存在する際は、
認証後に課金サービスの認可をきっちりしないとNG.
実際のところ
この記事では一つのサービスが、ユーザを識別認証認可をすることを想定しています.
現実では、2つのサービス間とユーザを認証する(アカウント連携、アプリとサーバのやり取りなど)
こともあります.そこではOAuth(認可)とOpenID Connect(認証・認可)が利用されています.