Java WebアプリケーションにGoogle reCAPTCHAを統合する方法
私は元々、キャプチャを好きではありませんでした。なぜなら、利用者には文字を理解し、自分が人間であることを証明しなければならないという負担があったからです。しかし最近、ウェブサイトで新しいGoogle reCAPTCHAを見たときは、すぐに気に入りました。なぜなら、チェックボックスをクリックするだけで、あなたが人間かロボットかを判断してくれるからです。GoogleはそれをNo CAPTCHA reCAPTCHA体験と呼び、進化したリスク分析エンジンと適応型CAPTCHAを使って、自動ソフトウェアによる悪意のある活動を抑制しています。それが今回の投稿の基盤となり、JavaベースのウェブアプリケーションでGoogle reCAPTCHAをどのように利用するかを紹介します。プロジェクトを進める前に、まずGoogle reCAPTCHAにアクセスしてサインアップする必要があります。その後、ウェブページにreCAPTCHAウィジェットを表示するために使用されるサイトキーを取得します。また、キャプチャの応答を確認するために、秘密キーも取得します。テストサイトを登録した後、以下のキーを取得し、プロジェクトで利用します。サインアップ時にはドメイン名を提供する必要があり、キーはそのドメイン名のみで機能します。また、キーは常にローカルホストで機能するため、自分のローカルサーバーで簡単にテストできます。これで準備が整ったので、次に例題のプロジェクトに移りましょう。ログインページがあり、利用者はユーザー名とパスワードを入力するだけでなく、reCaptchaも解かなければなりません。フォームが送信されると、ユーザー名とパスワードはアプリケーションで検証され、キャプチャの応答は秘密キーと一緒にGoogle reCAPTCHAサーバーに送信され、応答を受け取ります。Google reCAPTCHAからの応答は、成功の真偽値を持つJSONです。検証が成功すると、値はtrueになり、それ以外の場合はfalseになります。私はJava JSON処理APIを使用して応答JSONを解析します。以下の画像は、Eclipseでの最終的なプロジェクトを示しています。プロジェクトの土台を得るためには、Eclipseで「動的Webプロジェクト」を作成し、それをMavenプロジェクトに変換するだけです。JSON APIのためのpom.xmlファイルに以下の依存関係を追加します。
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.2</version>
</dependency>
一つずつ要素を調べてみましょう。
Google reCAPTCHAを使用してページを表示
以下は私たちのログインHTMLページのコードです。login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="US-ASCII">
<title>Login Page</title>
<script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<body>
<form action="LoginServlet" method="post">
Username: <input type="text" name="user"> <br> Password:
<input type="password" name="pwd"> <br>
<div class="g-recaptcha"
data-sitekey="6LdMAgMTAAAAAGYY5PEQeW7b3L3tqACmUcU6alQf"></div>
<br> <input type="submit" value="Login">
</form>
</body>
</html>
HTMLのセクションにGoogle reCaptcha JSファイルを追加し、