LoginSignup
5
3

More than 3 years have passed since last update.

認証(Authentication)と認可(Authorization)の違い

Last updated at Posted at 2020-11-02

AuthenticationとAuthorizationが紛らわしいのでメモ.
注意: "ユーザ"は、人とは限りません."サーバ"は、提供者(機械or人)です.

追記 2020/11/05

ritouさんにコメントいただきましたので、情報を修正しました!
(詳しくは修正履歴にてご確認ください)

忘れがちな Identification 識別

サーバがユーザを特定すること.
入力されたIdentifier(ID, 識別子)から、ユーザを特定する.

Authentication 認証

ユーザが本物かどうかの確認. 識別じゃないよ.
ユーザーが誰なのか特定したあとで、本当にその人なのか確認すること.
例えば、ユーザにCredential(パスワードとか認証に使うものたち)を渡してもらって、一致すればログイン.

Authorization 認可

サーバがユーザに適切な権限を与えること.
例えば、SQLのgrant文みたいなもん.
見せるだけか、投稿も許可するか.

認証と認可って分ける必要ある?

ある(と思ってる.).

アカウントを持たないユーザにサービスを提供する際は、認可のみでOK.

アカウントを持つユーザのみが対象でも、非課金サービスと課金サービスが存在する際は、
認証後に課金サービスの認可をきっちりしないとNG.

実際のところ

この記事では一つのサービスが、ユーザを識別認証認可をすることを想定しています.
現実では、2つのサービス間とユーザを認証する(アカウント連携、アプリとサーバのやり取りなど)
こともあります.そこではOAuth(認可)とOpenID Connect(認証・認可)が利用されています.

まとめると

識別して認証して認可するのが一般的な形.

5
3
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3