Closed5
Keycloak と reCAPTCHA
reCAPTCHA
概要
bot と人間を区別するサービスを CAPTCHA という
Google が無料で提供するサービスを reCAPTCHA という
reCAPTCHA 要約
- v1, v2, v3 がある
- v1: 読みづらい字を入力するやつ
- v2: 私はロボットではありません → 自転車の画像とかを選ぶやつ
- v2 ( invisible ): submit 時に bot っぽいとき画像選択になる
- v3: スコア判定によるやつ
- bot っぽさの判断ロジックは当然非公開
- v2 フロー ( 画像はリンク先のを )
- reCAPTCHA ウィジェットをパスする
- reCAPTCHA ウィジェットが Google にトークン要求をする
- フォーム送信先サーバにトークンを一緒に渡す
- フォーム送信先サーバが Google にトークン検証をする
- v3 フロー ( 画像はリンク先のを )
- 画像選択が完全に排除されている
- Google への検証時にスコアが返される
- スコアに応じて挙動を変えたり2段階認証にしたりお好きにどうぞ
- v3 の場合は管理画面でスコアの分布を確認できる
- 攻撃の分析や閾値判定に使える
メリ
- v2 は強固で正確
- v3 はユーザへの操作の強制がない
デメ
- v2 はユーザへの操作を強制する
- v3 スコアに応じた対応フローの整備が大変
- v3 は誤判定の可能性がある ( 特に本当に人間の場合 )
Keycloak 設定
設定
- Registration の Recaptcha アクションを有効にして key と secret を入れる
-
www.google.com
の iframe を許可する - サインアップ画面に出る
( google に登録してない適当な値だから壊れてるけど )
気になること
- ログイン画面には出ないんか?
- バージョンはいくつ?
設定
- reCAPTCHA は無料だが、1000 / sec ( 1,000,000 / month ) リクエストを超える場合は reCAPTCHA Enterprise を使うか登録と許可が必要らしい
- 今使っているのでそこを基準に判断できるだろう
- Google アカウントで設定できる
- 設定時に v2 か v3 を選ぶと、キーとシークレットができる
- かなり簡単
v2 のキーとシークレットを正しく設定すると、Keycloak で機能する
設定時に v2 の非表示というのを選ぶと v2 invisible になる
こちらも Keycloak にキーとシークレットを設定するだけ
v3 も Google のサイト上ではぽちぽちするだけでキーとシークレットができるが、Keycloak が対応してない模様
いったん深追いはしない ( 見たかったのでちょっと残念だけど )
サインアップとログイン両方で v3 を導入するならば
- A. サインアップ の v2 を v3 化する改造
- B. ログインに reCAPTCHA を仕掛ける改造
- C. および、その v3 化
が必要
それぞれ見込みは次の通り
- A は Keycloak 本体 にマージされなかった v3 対応の PR があったので、これを プラグイン という形で再現できればなんとかなるかもしれない
- B は GitHub に拡張例 があったので、これを使えばなんとかなるかもしれない
- C は B が動けば A のコードを参考に改造できるかもしれない
一旦ここまで
このスクラップは2021/07/28にクローズされました