認証/認可まとめ

ツイート
2021年05月12日
2021年05月18日

認証/認可の基盤がしっかり構築できると、アプリケーションの機能開発がスムーズにできるようになります。他にも決済や通知系(運用やユーザーテスト)なども同様です。

認証(Authentication)

OAuth認証がよく使われています。

  • Google OAuth 2.0 (Google Identity)
  • GitHub OAuth
  • Firebase
  • Auth0

などよく使用します。

フロントエンドでOAuthを呼び出し、成功すると、

  • username
  • email
  • provider_id
  • provider_name

などのデータが返ってきます。これらをバックエンドのDBに保存し、サービスのユーザーとして紐づけることで誰か特定できるようにします。独自の認証の場合は、パスワードを入力し、生成されたユニークなユーザーIDで識別しますが、OAuthの場合は、DBに登録したprovider_idやprovider_nameを使い識別します。

認証と認可の違い

  • 認証(Authentication)とは、相手の身元を確認すること。通信の相手が誰 (何) であるかを確認すること
  • 認可(Authorization)とは、権限を与えること。とある特定の条件に対して、リソースアクセスの権限を与えること。

HTTPステータス

  • 401 Unauthorized

認証の失敗 (お前誰だよ。)

  • 403 Forbidden

認可の不足 (理解した。だが断る。)

API or JWT認証

API Token or JWTを生成し、API利用(サービス利用)ができるかサーバーサイドで確認します。

①OAuthを使い、サービスにログイン(認証) ②API Token or JWTを生成し、基本的なサービスを利用できるようにする(認可)

このような形でしょうか。
細かいサービス利用権限はバックエンドで設定します。

暗号化/ハッシュ化

また、SHA256など、ユーザーのデータやtokenは暗号化やハッシュ化の対応が必要です。

参考