10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

認証・認可のこれとこれって何が違うの?をまとめてみる

10
Posted at

はじめに

dipアドベントカレンダー2025 13日目の投稿です。

認証認可を扱うのタスクにがっつり携わることになったので、Auth屋さんの本などを読み初歩の初歩から勉強中です。その中でこれとこれって何が違うの?となることが多発したのでまとめます。

目次


認証と認可

認証 (Authentication)

  • 目的:本人確認
  • 認証元のユーザーが、ユーザー本人であることを確認すること

認可 (Authorization)

  • 目的:権限の付与
  • ユーザーに対し、リソース等へのアクセス権限を与えること

あるサービスに登録されているユーザーAがログインしようとした時に、ユーザーAがサービスに登録されていることを確認するのが認証。認証した上で、ユーザーAがそのサービスまたは遷移先の画面にアクセスする権限があれば、アクセスを許可するのが認可。


OAuthとOIDC

OAuth (OAuth 2.0)

  • 認可の規格、フレームワーク。
  • ユーザーが直接サードパーティアプリにパスワード情報を渡さずに、アクセストークンの発行方法や、それを用いてアクセスして良いかどうか判断するためのルール。

OIDC:OpenID Connect

  • OAuth 2.0を拡張した、認証・認可の規格。
  • OAuth 2.0の仕組みを拡張し、IDトークンとUserInfoエンドポイントの仕様を追加して、認証にも使えるようにしたもの。

何が違うのか

項目 OAuth 2.0 OIDC (OpenID Connect)
主目的 認可 認証
発行されるもの アクセストークン アクセストークン + IDトークン
関係性 ベースとなる仕組み OAuth 2.0の拡張規格

アクセストークンとIDトークン

アクセストークン

  • OAuth 2.0で、ユーザーがリソースサーバーにアクセスするための認可を、認可サーバが与えるトークン。
  • JWT形式を使うこともあるし、使わないこともある。
  • Bearerトークンとして使われることが多い(Authorizationヘッダーに含めてリクエストする)。

IDトークン

  • OIDCで、「ユーザーが認証されたこと」を証明するトークン。ユーザーの名前やメールアドレスが含まれる。認証後のリソースサーバーへのアクセスの認可には使用できない。
  • 必ずJWT(JSON Web Token)形式。アプリケーション側でJWTをデコードして情報を取得する。
  • JWTはヘッダ/ペイロード/署名の形式になっており、署名を検証することで改ざんされていないことを確認できる。
    • この検証に公開鍵認証方式が使われることが多い。

おまけ JWSとJWTとIDトークンの関係

IDトークンは必ずJWTの形式で、その署名方法としてJWSが使われ、ヘッダ/ペイロード/署名という形式になる。IDトークンは署名つきJWTの形式を取る(=JWS)

  • JWTはトークンの受け渡し方としてjsonを必須とする。
  • IDトークンはJWTを必須とする。
  • JWTは署名が必須ではない場合もあるがIDトークンは署名が必須。その署名方法としてJWSを使う。

何が違うのか

項目 アクセストークン IDトークン
目的 リソースへのアクセス許可を示す 認証されたことを証明する
形式 主にJWT形式、そうでない時もある 必ずJWT形式

(補足)関連用語

トークン取得フローの登場人物たち。

  • 認可コード: リソースオーナー(ユーザー)が、クライアント(アプリ)への権限委譲に同意した証として発行される一時的なコード。これを認可サーバーに渡してアクセストークンと交換する。
  • リフレッシュトークン: アクセストークンの有効期限が切れた際、再度アクセストークンを要求するために使うトークン。

SSOとSAMLとソーシャルログイン

目的と手段の関係。

SSO:シングルサインオン

  • 1度のユーザー認証で、連携する複数のシステムが利用可能になる仕組みのこと。
  • これを実現する認証方式が5つある。
    1. エージェント方式
    2. リバースプロキシ方式
    3. 代理認証方式
    4. フェデレーション方式
    5. 透過型方式

SAML:Security Assertion Markup Language

  • SSOを実現する5つの認証方式の中で、フェデレーション認証(異なるドメイン間で安全に認証情報を連携する方式)で使われる、XMLをベースとした標準規格。
  • 用語:
    • SP (Service Provider):ユーザーが使いたいサービス
    • IdP (Identity Provider):SAML認証の提供元

ソーシャルログイン

  • SSOを実現する手段。フェデレーション認証方式。
  • LINEやGoogleなどのソーシャルメディアのIDを使って、SSOを実現する(他のサービスへ認証する)手段のこと。

じゃあソーシャルログインにもSAMLを使うってこと???

と思ったのですが全然違いました。

SAMLはXMLベースのメッセージで、認証認可のために用意したIdPとSPの間で認証情報をやり取りする。
ソーシャルログインはソーシャルメディアのアカウントの認証情報を用いて、主にOIDCを使ってログインする。例えばGoogle, LINE, X等のソーシャルメディアのアカウントを使って認証する場合を指す。

何が違うのか

項目 SSO (シングルサインオン) SAML ソーシャルログイン
分類 目的、仕組み プロトコル、規格 SSOの具体的な手段(OIDCを使用)
目的 一度の認証で複数システムを利用 IdPとSP間の認証情報連携 ソーシャルメディアアカウントを使用したSSO

MFAと2段階認証

(前提)認証には以下の3要素がある。

知識情報 (Something You Know):パスワード、秘密の質問など
所持情報 (Something You Have):スマホ、ICカード、ハードウェアトークンなど
生体情報 (Something You Are):指紋、顔、静脈など

2段階認証

  • 認証のプロセスを2段階行うこと。
  • 要素が重複していても良い。

MFA(Multi Factor Authentication:多要素認証)

  • 上記の認証3要素のうち、異なる2つ以上を組み合わせて認証すること。2段階認証よりもセキュア。

何が違うのか

項目 2段階認証 MFA(多要素認証)
定義 認証プロセスを2段階行うこと 異なる要素を2つ以上組み合わせること
要素の重複 できる できない

認証認可に関わる概念の違いをまとめてみました。もし内容が間違っていたら教えてください🙇
理解の最初の足がかりになったら嬉しいです。

10
0
0

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
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?