나는 이 질문에 대한 답변을 읽었습니다.
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의 경우, 죄송하지만 질문하신 내용을 이해할 수 없습니다. 예를 들어볼까요?