LoginSignup
0
1

More than 1 year has passed since last update.

Basic認証アレコレ

Posted at

割と面倒くさい

開発環境や管理画面、秘密のページに Basic 認証かけることは、結構あって、ちゃちゃっとかけたいけど、意外と面倒くさい。

Basic 認証のかけかた基本

最近は、React.js, Next.js を取り扱うことが多い。

React.js で Basic 認証

React をサーバに Deploy する時は、Build して Nginx で動かすことが多いと思われるので、Nginx で .htpasswd すれば良い。

Nginx で Basic 認証

Next.js で Basic 認証

Next.js の場合、middleware を使ってかける。middleware の取り扱いは、バージョンによって大きく異るので、ググる時は、Next.js のバージョンに気をつけて。というか、最初に公式ドキュメントを見るのが良い。

Next.js v12 の場合

Next.js + typescript + Prisma の API テンプレートを作る

AWS で CloudFront を通した場合

上記の方法で Basic 認証を書けている場合、CloudFront 通すと Basic 認証が通らなくなる。
理由は、レスポンスヘッダが足らないから。

レスポンスヘッダを追加する

ビヘイビアを編集し、レスポンスヘッダに Authorization を追加する。キャッシュタイムを0にする。

CloudFront Function で Basic 認証する

開発環境に CloudFront 使うのか?という話はあるけど、Production ではかけないし、Upstream にエスカレーションしていく間に機能を落としていくのもなんだかなーとも思うので、開発環境にも CloudFront 刺してる場合は、こっちの方が良い。アプリケーションでかけた Basic 認証は解除し、CloudFront Function を作成して、これまたビヘイビアで追加する。

CloudFront FunctionsでBasic認証のパスワードをかける

AWS WAF で Basic 認証する

WAF を使っても良い。

AWS WAF で Basic 認証をかける

開発環境への Basic 認証みたいなものは、外出しの方が良い。Basic 認証に限らず、こういう系は Solution をいくつか持っておくのが良い。

WebView で Basic 認証

アプリ次第?だけど、基本的にできないと思っておいて良い(はず)。WebView で Basic 認証かけたいことなんてある?と思うかも知れないが、例えば Metamask と連携する Web アプリの開発環境とか。実機テストしようとすると、Basic 認証が突破できないんじゃなくて、そもそも開けない。

いずれ変わるのかも知れないけど、Basic 認証以外の制限を考えた方が良い。もしくは、WebView で表示されるのもなかなかしんどいので、Metamask は、やめとこう。とか。

Basic 認証をやり直す

まぁそんなこんなで、何度もやり直したい時期もある。Basic 認証一回通すとキャッシュされて出てこなくなる。すぐにやり直したい場合は、ドメインの前に 任意の文字列@ を付けるとログアウト?される。

https://me@example.com みたいなこと。

他にもありそうな気がするけど、今日はこんなところで。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1