どうも、「病院なび」の開発チームメンバー甘利です。
猛暑の夏が過ぎ去り、秋の足音が近づいてきている気がします。
今回は認証に AWS Opensearch にリーバースプロキシを設定していこうと思います。
認証サービスには Cognito 、リーバースプロキシには NGINX を設定します。
とはいえ、公式ドキュメントの通りに設定するだけです、、がはまりましたので、記事にしておきたいと思います。
パスワードの再発行画面にいこうとすると、404エラーになる。
Cognito を利用しているとOpensearch dashboard にアクセスした際に以下の様な認証ダイアログが表示されます。自分で設定しておいてアカウント忘れたので、「Forgot your password」 をクリック!
ユーザー名を入れてくれと言われるので、入力して「Reset My Password」をポチッと
orz.. 404になってしまいました。
NGINXのConfigファイルが間違いがないか確認
こういうのは大体自分が間違っているので、自前の設定ファイルとドキュメントの設定ファイルのDiffを確認してみましたが、ホスト以外異なるところはありませんでした。
頭を使わずに解決ができそうにないみたいなので、少し頭をつかいます。
confirm がパスとして定義されていない。
404 になるページのパスは confirm なので、そのページについての設定が抜けてるということになります。 ドキュメントの location は以下のように設定されてます。
location ~ \/(log|sign|fav|forgot|change|saml|oauth2) {
cognitoのパスがlocationに書かれているので、ここに confirm がないと動きませんよね。
ということで追加します。
location ~ \/(log|sign|fav|forgot|change|saml|oauth2|confirm) {
無事パスワードのリセットができるようになりました。
何度見直して、どう考えても自分が間違っていない時は他を疑ってみよう
公式のドキュメントに間違いや不足があることもありますので、自分のやったことをしっかり確認したあとに、疑ってみるのも重要ですね。(自分が間違っていると思い込んでいたので、解決に時間かかりました。)
とりあえずフィードバックは投げておこうと思います。
以上です。
もし今回の記事が少しでも面白いと思った方は、LGTMをお願いします。
記事に対する鉞は叩き落としますが、マシュマロは大好物です。