Keycloak 導入事例・サポートバージョン

Keycloak

Keycloak最新情報

NRIのOpenStandiaが提供するKeycloak最新情報

OSSの保守サポートサービスの内容はこちら OSSの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Keycloakの実際・翻訳プロジェクト紹介

翻訳した日本語ドキュメント(Keycloakのインストール方法や使い方ガイド)のリンク集は日本語ドキュメントにございます。

Keycloakのサポート対応事例

Keycloakのアカウントが意図せずロックされる問題を解消

このページでは、Keycloakのアカウントロックについての問い合わせに対して、どのようなサポートをしたかを紹介します。

この問い合わせは、ブルートフォース攻撃の対策のためにKeycloakのブルートフォース検知機能を有効にしたところ、アカウントが意図せずロックされることが度々があったため、なぜこのようなことが起きるのかを教えて欲しいというものでした。 ブルートフォース検知機能は管理コンソールの「Realm Settings」の「Security Defenses」の「Brute Force Detection」タブから 設定ができます。

keycloakブルートフォース攻撃対策

使用しているKeycloakのバージョンは4.8.3でした。

問い合わせの内容などをもとにKeycloakの動作確認をしてみると、どうもログインボタンを二度押しするとアカウントがロックされるようです。 しかし、ログインボタンをクリックすると、レスポンスが返ってくるまでの間、ボタンのプロテクトがかかり、 二度押しを防止する対策はできているように見えます(以下のようにボタンをクリックした直後は色が変わり、 クリックしてもリクエストは送信されていません)。

keycloak動作確認

さらに動作検証してみると、ログインボタンをクリックし、レスポンスが返ってきてすぐにログインボタンをクリックすると (パスワードを入力せずすぐに)、アカウントが一時的にロックされることが分かりました。このような操作を、 ユーザーが意図的に行うことはありませんが、誤ってボタンをクリックしてしまうことは十分にありえます。

このようなKeycloakの動作はユーザーにとっては好ましいものではありません。 ユーザーはアカウントがロックされたことに気づかないまま、正しいパスワードでのログインに失敗し続けることになるでしょう。 ユーザーは混乱してしまいます。そして、パスワードが間違っていると判断し、本来必要のないパスワードのリセットを行うことにもなります。

しかし、なぜこのような誤操作でアカウントがロックされてしまうのでしょうか? Keycloakのブルートフォース検知機能のうち以下の2つの設定が影響していました。

  • Quick Login Check Milli Seconds
    前回のログイン失敗からこの時間経過せずにログインを行うと一時的にアカウントをロックする。デフォルトは1000ミリ秒。
  • Minimum Quick Login Wait
    Quick Login Check Milli Secondsより早いログイン試行があった場合の、一時的にアカウントをロックする時間。デフォルトは1分。

つまり、1秒以内にログインが2回失敗すると、アカウントは1分間ロックされてしまうことになります。

Keycloakのドキュメントに記載されている通りの動作ではあるのですが、ユーザーの利便性にとってよくありません。 ひとまず顧客への暫定対応として「Quick Login Check Milli Seconds」を短くすることを提案し、 根本対策のためにKeycloakの課題管理システムへのバグ報告(改善案の提示)とその修正のプルリクエストをすることを検討しました。

ではどのようにこの問題を改善すればいいのでしょうか?「Quick Login Check」自体を無くしてしまえばいいのでしょうか? しかし、短時間に連続でログインリクエストを送信するブルートフォース攻撃の対策のためには残しておいた方がいいでしょう。

少し考えてみると、結論は単純でした。今回の問題はパスワードを入力する間もなく短時間にログインリクエストを送信している場合の問題ですが、 そもそもブルートフォース攻撃は様々なパスワードを試行するので、パスワードが未入力のリクエストを何度も送信してくることを防御する必要はないはずです (認証成功するはずがログイン試行を攻撃者はしないので)。

ということで、パスワードが未入力のログインリクエストはブルートフォース検知の処理を行う前に入力エラーにしてしまうことにしました。 その後、プルリクエストを行い、無事マージされました。

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO