nissy.dev

認証と認可の基礎

9 min read
  • #note
目次

Web で支える技術で出てきたものを主に取リ扱う。

認証と認可の違い

認証 = ユーザが誰かを確認すること

Determines whether users are who they claim to be

認可 = とある特定の条件に対して、リソースアクセスの権限を与えること

Determines what users can and cannot access

認証せずに認可する例

認証

HTTP 認証の基本

チャレンジ・レスポンス方式の流れ

Basic 認証

クライアントのリクエストヘッダの例

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

メモ

WWW-Authenticate: Basic realm="Exmaple.co.jp"

Digest 認証

credentials の作成方法

A1 = username ":" realm ":" password
A2 = HTTPのメソッド ":" コンテンツのURI (":" メッセージボディ)

credentials = MD5(
    MD5(A1) ":" サーバーノンス ":"
    クライアントがノンスを返した回数 ":"
    クラアントノンス ":" qop ":" MD5(A2)
)

qop (quality of protection)

メモ

認可

OAuth 2.0

OAuth 2.0 = アクセストークンの発行方法を標準化したもの

OAuth のフローは以下の通り

OAuthのシーケンス図

アクセストークンの発行手順

メモ

認可 + 認証

Open ID Connect

Open ID Connect = ID トークン発行とユーザーのプロフィール情報 (End-User Claim) の取得手順を標準化したもの

Open ID Connect のフローは以下の通り (OAuth と似ているので、シーケンスは書かない)

メモ

参考資料