Closed5

Keycloak と reCAPTCHA

ほげさんほげさん

reCAPTCHA

https://www.synergy-marketing.co.jp/blog/using_recaptcha_on_form

概要

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 は誤判定の可能性がある ( 特に本当に人間の場合 )
ほげさんほげさん

設定

https://www.webdesignleaves.com/pr/plugins/google_recaptcha.php

  • 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 化

が必要

それぞれ見込みは次の通り

このスクラップは2021/07/28にクローズされました