web-dev-qa-db-ja.com

BasicAuthを必要とするが、これをユーザーから隠したいエンドポイントへのApache2リバースプロキシ

基本的に私のシナリオは、アクセスするためにハードコードされた単一のユーザー名とパスワードを必要とする内部Webサイトがあることです(これをオフにすることはできず、変更するだけです)。さまざまな理由(ポートの非表示、URLの簡素化、NATの簡素化など)で、このWebサイトをリバースプロキシ経由で公開しています。

ただし、私がやりたいのは、Apacheを使用して認証を処理できるようにすることです。

  1. 配る必要はありません シングル みんなのパスワード
  2. ApacheのBasicAuthを使用して複数のユーザー名とパスワードを持つことができます
  3. 内部ユーザーの場合、パスワードの入力を求める必要はありません

編集:より豊富な認証に関する2番目の部分は 新しい質問に移動されました

これが私が今持っているものです:

<VirtualHost *:80>
  ServerName sub.domain.com

  ProxyPass        / http://192.168.1.253:8080/endpoint
  ProxyPassReverse / http://192.168.1.253:8080/endpoint

  # The endpoint has a mandatory password that I want to avoid requiring users to type
  # I.e. something like this would be Nice (but does not work)

  # ProxyPass        / http://username:[email protected]:8080/endpoint
  # ProxyPassReverse / http://username:[email protected]:8080/endpoint

  # Also need to be able to require a password to access proxy for people outside local subnet
  # However these passwords will be controlled by Apache using BasicAuth, not the ProxyPass endpoint

  # Ideas?
</VirtualHost>
20
Bo Jeanes

エンドポイントにリクエストを渡す前に、Authorizationヘッダーを追加または上書きします。承認ヘッダーはハードコーディングできます。これは、文字列「username:password」(引用符なし)のbase-64エンコードにすぎません。

まだ行っていない場合は、mod_headersモジュールを有効にします。

RequestHeader set Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

これを条件付きで実行するには、mod_setenvifを有効にします。ローカルリクエストの場合でも、マスターパスワードを要求します。

SetEnvIf Remote_Addr "127\.0\.0\.1" localrequest
RequestHeader set Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" env=!localrequest

[〜#〜]例[〜#〜]

# ALL remote users ALWAYS authenticate against reverse proxy's
#  /www/conf/passwords database
#
<Directory /var/web/pages/secure>
  AuthBasicProvider /www/conf/passwords
  AuthType Basic
  AuthName "Protected Area"
  Require valid-user
</Directory>

# reverse proxy authenticates against master server as:
#  Aladdin:open sesame (Base64 encoded)
#
RequestHeader set Authorization "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
24
vladr

さて、私はあなたの例を使用して、Apacheプロキシパスを使用する2台のIPカメラを指しています。構文user:[email protected]を使用し、iphoneからアクセスすると、safari(iphone navigator)からセキュリティメッセージが表示されたので、iPhone4Sでうまく機能するように例を変更しました。

<Location /camarafeliz1/ >
        # usuario admin password 123456
        ProxyPass         http://192.168.0.39/
        ProxyPassReverse  http://192.168.0.39/
        RequestHeader set Authorization "Basic YWRtaW46MTIzNDU2=="
</Location>
<Location /camarafeliz3/ >
        # usuario admin password 123456
        ProxyPass         http://192.168.0.99/
        ProxyPassReverse  http://192.168.0.99/
        RequestHeader set Authorization "Basic YWRtaW46MTIzNDU2=="
</Location>

そしてiphone4sは、リンクにユーザーとパスワードが含まれているため、セキュリティについての不満をやめました。

3
googol plex