허용된 사용자에 대한 Apache 인증?

허용된 사용자에 대한 Apache 인증?

나는 이 질문에 대한 답변을 읽었습니다.

https://stackoverflow.com/questions/4102763/apache-basic-authentication-book-for-those-allowed

(IP에 따라) 일부 사용자를 인증하지 않는 방법을 이해하는 데 도움이 되었습니다.

<Directory /var/www/files/>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.2
    Satisfy Any
    AuthUserFile /etc/apache2/basic.pwd 
    AuthName "Please enter username and password" 
    AuthType Basic 
    Require valid-user 
</Directory>

다음 DB가 있다고 가정해 보세요(인증에 사용되는 DB와 다름).

User        IP 
Mark        192.168.1.2
Mike        192.168.1.3
Karl        192.168.1.4

1- Apache의 구성을 사용하여 DB에 저장된 모든 IP 주소를 허용할 수 있습니까?

2- 또 다른 문제는 허용된 IP의 인증이 손실된다는 것입니다. 사용자가 인증 없이 페이지를 가져올 수 있는 경우 Apache가 인증을 위해 이 DB를 사용할 수 있습니까?

업데이트:

확실하게:

1- 저는 정적 솔루션을 원하지 않습니다. Apache가 DB에 언급된 테이블의 모든 IP를 허용하도록 하고 싶습니다(DB는 동적으로 변경됩니다).

2- Apache가 사용자를 인증할 때 인증 자격 증명에서 사용자 이름을 알고 있지만 허용을 사용하면 사용자 이름이 손실됩니다. Apache가 허용하는 IP의 사용자 이름을 추출하는 동일한 테이블에서 추출하도록 합니다. IP 주소?

답변1

제안된 답변을 시도해 볼 수 있습니다.여기mod_rewrite파일에서 블랙리스트를 작성 하는 방법 :

## WHITELIST IPS ##
RewriteMap ipslist txt:/path/to/whitelist.txt
RewriteCond %{REMOTE_ADDR} ^(.*)$
RewriteCond ${ipslist:%1|black} ^black$ [NC]
RewriteRule (.*) - [F]

다음과 같은 동적 것을 시도해 볼 수 있습니다.mod_authn_dbd데이터베이스에서 사용자 이름과 비밀번호를 선택하려면:

# mod_dbd configuration
DBDriver pgsql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"

DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300

<Directory /usr/www/myhost/private>
  # core authentication and mod_auth_basic configuration
  # for mod_authn_dbd
  AuthType Basic
  AuthName "My Server"
  AuthBasicProvider dbd

  # core authorization configuration
  Require valid-user

  # mod_authn_dbd SQL query to authenticate a user
  AuthDBDUserPWQuery \
    "SELECT password FROM authn WHERE user = %s"
</Directory>

답변2

#1에 대한 답변으로 원하는 만큼 많은 IP를 허용할 수 있습니다... 예:

Allow from 192.168.1.2
Allow from 192.168.1.3
Allow from 192.168.1.4

또는

Allow from 192.168.1.2 192.168.1.3 192.168.1.4

그리고 범위를 포함한 많은 다른 것.

#2의 경우, 죄송하지만 질문하신 내용을 이해할 수 없습니다. 예를 들어볼까요?

관련 정보