💭

Keycloak関連用語のまとめ

2022/09/17に公開

はじめに

  • Keycloakを調べ始めたところ用語が多いので、ざっくりメモ程度にまとめてみました

Keycloakとは

  • アイデンティティ・アクセス管理(Identity and Access Management:IAM)のソフトウェア
    • IAMとは簡単に言うとIDとアクセス権を管理する機能のこと
  • シングルサインオンやAPIアクセスの認証・認可制御を実現するもの
    • シングルサインオン(Single Sign On:SSO)とは
      • 一度のログインで複数アプリケーションやサービスに対してアクセス可能になる特性や機能の事
  • AD(Active Directory)や外部で管理しているユーザー管理DBと連携出来る
  • Apache 2.0ライセンス

認証・認可の違い

認証とは

  • ユーザーから提示されたクレデンシャルと、あらかじめシステムに登録された情報を照合してユーザー本人であるかを確認すること
    • クレデンシャル(credential)とは
      • ユーザーIDやパスワードなどの認証に用いられる情報のこと

認可とは

  • アクセス権を与える行為のこと
  • 認可が行われた後は「認可判断」が行われる
    • 認可判断とは
      • アクセス権に基づきアクセス可否を判断すること
      • 広い意味では認可に含まれることがある

使われるプロトコル

OAuth

  • API認可で使われるプロトコル
    ID/PWではなく、一時的に使うことのできるアクセストークン(権限委譲用クレデンシャルともいう)を使ってAPIを実行するという仕組みがOAuthの考え方
    • アクセストークンとは
      • 当該クライアントアプリケーションがユーザーのデータを利用することを許可されていることを示すもの
    • リフレッシュトークンとは
      • 新しいアクセストークンを取得するために必要な情報を保持している
      • 用途としてはアクセストークンの期限が切れてしまった時に新たなアクセストークンを取得するために利用される
      • アクセストークンと共に発行される

Open ID Connect(OIDC)

OAuthを拡張して作られた認証のためのプロトコル
基本的なフローはOAuthと同じになる
認証にはIDトークンを使う

  • IDトークンとは
    • ユーザーが認証された事を証明するトークン
    • IDトークンはJSON Web Token(JWT)としてエンコードされている
      • JWTとは
        • JSON形式で表現された認証情報などをURL文字列などとして安全に送受信できるよう、符号化やデジタル署名の仕組みを規定した標準規格
        • ドット (.) で区切られた 3 つの Base64 エンコード文字列が含まれている
          • ヘッダー、ペイロード、および署名
    • IDトークンはどの発行者/issから、どの対象者/subの情報を、どの利用者/audに対して、いつまでの有効期限/expで、いつ発行された/iatか、という情報を必ず含んでいる

SAML(Security Assertion Markup Language)

異なるドメイン間においてユーザー認証を行うためのXMLをベースにしたプロトコル

  • 「事前に信頼関係(設定)を構築し、信頼関係に基いてアイデンティティ情報を連携する」という仕組みを用いている
    • 社内ネットワークでの使用を目的として発展してきた関係

OAuthとOIDCとSAMLの比較

OAuth OIDC SAML
標準化した年/最新版 2012年/OAuth 2.0 2014年/OpenID Connect 1.0 2005年/SAML 2.0
フォーカス 認可のみ 認証と認可 認証と認可
発行するトークン アクセストークン、リフレッシュトークン アクセストークン、リフレッシュトークン、IDトークン SAMLアサーション(3種類:認証、属性、承認)
データ形式 JSON JSON XML
用語:使用する人 リソースオーナー エンドユーザー ユーザー
用語:使用するアプリ クライアント RP(Relying Party) SP(Service Provider)
用語:認可/認証サーバー 認可サーバー OP(OpenID Provider) IdP(Identify Provider)
用語:リクエスト 認可リクエスト 認証リクエスト SAML Request
用語:レスポンス 認可レスポンス 認証レスポンス SAML Response

参考

書籍「認証と認可 Keycloak入門 OAuth/OpenID Connectに準拠したAPI認可とシングルサインオンの実現」
https://qiita.com/daian183/items/30f01e162e03567ff21b
https://www.macnica.co.jp/business/security/manufacturers/okta/blog_20210901.html
https://www.onelogin.com/jp-ja/learn/oidc-vs-saml
https://www.ogis-ri.co.jp/otc/hiroba/technical/openid-connect/chap1.html
https://logmi.jp/tech/articles/325888
https://qiita.com/TakahikoKawasaki/items/8f0e422c7edd2d220e06
https://dev.classmethod.jp/articles/auth0-access-token-id-token-difference/
https://logmi.jp/tech/articles/322822
https://zenn.dev/ayumukob/articles/640cbf4a1ff3ed

Discussion