2. 簡易パスワード認証(password)
概要
環境変数やクラウドが不要で、JS ファイル内のハッシュと比較するだけの簡易な起動制御です。公開用ではありません。GLWAN など限定的な環境やテスト用途に限定してください。インターネットや社内共有サーバーで公開する場合は 3. Cloudflare 認証(cloudflare) を使用してください。
利用シーン
- GLWAN など限定的な環境でのテスト
- 非公開の社内共有サーバーでの一時的な起動制限
- インターネット公開や本番運用は対象外
起動と設定
web/auth-methods.json の control を 2 に設定すると、この認証方式が選択されます。
{
"control": 2
}
ブラウザで http://127.0.0.1:8510/ を開くだけで起動します。
ID/PASS の設定
web/PLUGIN/auth-password/auth.js の以下の定数を編集してください。
const EXPECTED_USER = "admin";
const EXPECTED_SALT = "2tr4Cnrn5LXfo6fpf7ozNg==";
const EXPECTED_HASH = "67mzCzSXZtPm1xNbLmYgPN+ME4F974mZ+qqIxKOu5Zg=";
初期値: ユーザーID admin、パスワード admin
ハッシュ生成
新しい SALT / HASH を生成する例です。
python -c "import base64,secrets,hashlib; s=secrets.token_bytes(16); h=hashlib.pbkdf2_hmac('sha256',b'USER:PASS',s,100000,32); print(base64.b64encode(s).decode()); print(base64.b64encode(h).decode())"
資産ごとの秘匿状況
| 資産 | 未ログインの第三者 | 備考 |
|---|---|---|
| ID/PASS | △ ハッシュで露出 | ユーザー名は平文、パスワードは PBKDF2 ハッシュとして auth.js 内に存在。ハッシュの逆算は困難ですが、弱いパスワードはオフライン総当たりで解析可能です |
| .kasc 設定 | ❌ 全公開 | 静的ファイルとして誰でも取得可能 |
| HTML/JS/CSS(アプリ本体) | ❌ 全公開 | ログイン画面は見た目のゲートのみ。ファイルは全て取得可能 |
| データ(web/) URL が公開情報から分かる | ❌ 列挙容易 | .kasc や projects.json に記載のパス、DATA/ の固定パスは一覧・推測で容易に取得可能 |
| データ(web/) URL が非公開・推測困難 | △ obscurity | どこにもパスが書かれていないファイルは URL を知らなければ到達困難。ただし認証はないため URL が漏れれば即座に取得可能 |
サーバー側で守られる資産は一切ありません。ハッシュ化は「パスワードの中身を読みにくくする」だけで、ファイル・データの保護にはなりません。
セキュリティ上の注意
- 保護できるもの:アプリ起動制御(ID/PASS のハッシュ照合)
- 保護できないもの:HTML/JS/CSS 等の静的ファイル、
DATA/内の画像・GeoJSON 等、認証情報(auth-password.js内の SALT/HASH)の読み取り - 利用場面:GLWAN など限定的な環境・テスト用途(公開不可)
- 注意:真のセキュリティには向いていません。完全な保護が必要な場合は
cloudflare方式を使用してください