Open19

認証と認可 Keycloak入門

ytaisei(たいせー)ytaisei(たいせー)
  • 他要素認証や権限管理もできる
  • OIDC、SAMLに対応
  • 基本はJavaだからアダプタとかもJavaなのかな?
ytaisei(たいせー)ytaisei(たいせー)

アクセストークンの形式

  1. Handle型で、アクセストークンは意味を持たないランダムな文字列で表現。

アクセストークンに関連付いた情報は、認可サーバーで管理されており、アクセストークンは、その情報への参照を表す識別子となります。

  1. Assertion型で、アクセストークンは意味を持つ文字列で表現。

keycloakは2をサポート

ytaisei(たいせー)ytaisei(たいせー)

元々はCookieの連携だけでSSOを実装してたが、社内の認証基盤とクラウドサービスのSSOを実現するケースなどについては、Cookieだけでは認証済み状態を異なるドメインにあるアプリケーション間で共有することができない

異なるドメイン間でのSSOを実現するためには、Cookie以外のものでブラウザーを介して認証結果を安全にやりとりする、認証連携の方式が必要

→ SAML, OIDC

ytaisei(たいせー)ytaisei(たいせー)

OIDCは、ソーシャルログインなどのコンシューマー分野で使われることが多い

SAMLは企業向けのSaaSアプリケーションとのSSOでよく使われており、エンタープライズ分野ではまだまだ必要

ytaisei(たいせー)ytaisei(たいせー)

Keycloakを認証用のサービスとして公開し、複数の企業に利用してもらうようなケースでは、企業ごとにレルムを作成して、その中に社員データを参照するLDAPサーバーの設定をしたり、連携用のアプリケーション(クライアント)の情報を登録して、SSOを実現。

ytaisei(たいせー)ytaisei(たいせー)

セッションの有効期限には2種類ある

  1. SSO Session Idle
  2. SSO Session Max

最初にセッションが生成されてから、SSO Session Maxの時間が経過すると、セッションが無効になり、関連するトークンもすべて無効になる

ytaisei(たいせー)ytaisei(たいせー)

認可コードの有効期間は、最大でも10分以内が推奨。

アクセストークンに関しては、漏洩したときの影響を軽減するために、有効期間を1時間以内の値に設定。