反応Reciptcha V 2によるAWS認知


AWSの認知


認知は、AWSが提供するユーザー管理のための管理サービスです.それは最初に完全なようですが、いくつかの機能が利用されていない、例えばcaptcha、パスワードの回転、パスワードの有効期限があります.
しかし、それらは何らかの動作にラムダトリガを提供します.事前認証とポスト認証のような認識を実行するときにトリガする関数を記述することで、機能を拡張できます.
それがサインアップ/ログイン流れになるとき、一般的な要件はCattchaです.
これにはAWSアンプを使用します.

アムスラムダ


ラムダは、AWS上でServerlessなコードを実行する方法です.このようなコードを実行するには、Computeインスタンスのプロビジョニングは必要ありません.

回避する


RecaptchaはGoogleによるキャプチャサービスです.サイトのキーとrecaptchaの秘密キーを正しく動作するように取得するには、Googleアカウントが必要です.recaptcha v 2を使用します.
サインアップすると、クライアント側にあるサイトキーと秘密キーをメモします.
我々は、これのために反応Google Recaptchaを使用しています.

recaptchaの反応のインストール


Reciptchaライブラリをプロジェクト依存関係にインストールします.
npm i react-google-recaptcha
回収する
import ReCAPTCHA from "react-google-recaptcha";

function onChange(value) {
  console.log("Captcha value: ", value);
}

<ReCAPTCHA
  sitekey="YOUR SITE KEY HERE"
  onChange={onChange}
/>
これから、我々はRecaptchaトークンを得ることができます、現在、我々は証明のためにAWS認知にユーザー証明書と共にそれを送る必要があります.

AWS認知へのトークンの通過


import { Auth } from "aws-amplify";

Auth.signIn(username, password, {
        captcha: token,
      }).then...
ユーザ名とパスワードがユーザ入力資格証明書であるとき、最後のパラメタはAWSによってどんな方法ででも格納されていないclientMetadataと呼ばれていて、ラムダの引き金でのみ使用されます.
トークンの値をキー“captcha”で追加したことがわかります.次に、この値をどのように使うかがわかります.

ラムダ関数の作成


あなたのAWSラムダにログインして、nodejsで新しい機能をつくってください.

const axios = require("axios");

const config = {
  recaptcha: {
    secretKey: process.env.SECRET_KEY,
  },
};

exports.handler = async(event) => {
  console.log(event);
  if (!event.request.validationData) {
    throw new Error("Missing validation data");
  }
  try {
    const payload = {
      secret: config.recaptcha.secretKey,
      response: event.request.validationData.captcha,
      remoteip: undefined,
    };
    const verifyResponse = await axios({
      method: "post",
      url: "https://www.google.com/recaptcha/api/siteverify",
      params: payload,
    });
    if (verifyResponse.data.success) {
      return event;
    }
    else {
      throw new Error("Recaptcha verification failed");
    }
  }
  catch (error) {
    console.error(error);
    throw error;
  }
};
また、ラムダページ内の環境変数にrecaptcha秘密キーを追加する必要があります.

ラムダでこのコードを加えた後に、あなたのAWS認知のユーザープールのあなたの事前の認証引き金にこのラムダ関数を加えてください.

今、あなたのトリガーと機能を準備し、アプリケーションのログインフローを試してみてください.
ラムダがあなたの関数の依存関係を必要とするためです.

コードのアップロード


ラムダを使用すると、依存関係を使用してコードをzipアップし、それらをアップロードすることができます.我々がここでしなければならないことは、上にそのコードをコピーすることです.JSファイルは、25.779152 NODERANモジュールにインストールし、それをアップロードしてアップロードします.

アクシオス ついに!


そして、あなたは完了です!あなたは、ちょうどラムダでCaptchaを含むためにわずかにAWS認知の認証流れを変えました!
あなたのニーズを達成するためにトリガを使用して、他のトリガを探索し、ラムダでそれらをカスタマイズする多くの方法があります!
乾杯!