htaccess는 기본 인증에서 하나의 URL을 제외합니다.
일반 htaccess 기본 인증 보호에서 하나의 Url (또는 더 나은 하나의 접두사)을 제외해야합니다. /callbacks/myBank
또는 같은 /callbacks/.*
일을 수행하는 방법에 대한 힌트가 있습니까?
내가 찾고 있지 않은 것은 파일을 제외하는 방법입니다. 이것은 URL이어야합니다 (이는 PHP 프레임 워크를 기반으로하는 솔루션이며 모든 URL 리디렉션 은로 mod_rewrite
됩니다 index.php
). 따라서이 URL에는 파일이 없습니다. 아무것도.
(IP를 알 수 있다는 IP를 기준으로 제외 할 수 없음) 사용자 / 암호를 묻지 할 수 없음)
현재 정의는 다음과 같이 간단합니다.
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd
require valid-user
Apache 2.4를 사용 SetEnvIf
중이고 Require
지시문이 작성을 직접 해석 할 수 있으므로 mod_rewrite 해결 방법이 더 이상 필요하지 않은 경우 :
AuthType Basic
AuthName "Please login."
AuthUserFile "/xxx/.htpasswd"
Require expr %{REQUEST_URI} =~ m#^/callbacks/.*#
Require valid-user
Require
아파치 2.4 취급 하는 지시 하지 별로 그룹 <RequireAll>
화가있는 것처럼 <RequireAny>
에 "또는"문으로 작동합니다. 다음은 요청 URI와 쿼리를 사용하여 원하는 사용자를 요구하는 것을 더 복잡한 예입니다.
AuthType Basic
AuthName "Please login."
AuthUserFile "/xxx/.htpasswd"
<RequireAny>
<RequireAll>
# I'm using the alternate matching form here so I don't have
# to escape the /'s in the URL.
Require expr %{REQUEST_URI} =~ m#^/callbacks/.*#
# You can also match on the query string, which is more
# convenient than SetEnvIf.
#Require expr %{QUERY_STRING} = 'secret_var=42'
</RequireAll>
Require valid-user
</RequireAny>
이 예에서는에 대한 액세스를 허용 /callbacks/foo?secret_var=42
하지만에 대한 사용자 이름과 비밀번호가 필요 /callbacks/foo
합니다.
을 사용하지 않는 한 <RequireAll>
Apache는 Require
순서대로를 일치 시키려고 시도합니다. 먼저 허용 할 조건을 생각하십시오.
Require
지시문에 대한 참조 는 https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require입니다.
그리고 expr
ession 참조는 여기에 있습니다 :
SetEnvIf를 사용 하면 요청이 일부 경로로 시작될 때 변수를 생성 한 다음 Satisfy Any
지시문을 사용하여 로그인하지 않아도됩니다.
# set an environtment variable "noauth" if the request starts with "/callbacks/"
SetEnvIf Request_URI ^/callbacks/ noauth=1
# the auth block
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd
# Here is where we allow/deny
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
허용 / 거부 지시문은 유효한 사용자 (성공적인 BASIC 인증 로그인)가 또는 변수가 하나 경우 를 제외하고 EVERYONE 에 대한 액세스를 거부 할 수 있습니다 .noauth
이 솔루션은 매우 잘 작동하며 통과하려는 화이트리스트를 정의하기 만하면됩니다.
SetEnvIfNoCase Request_URI "^/status\.php" noauth
AuthType Basic
AuthName "Identify yourself"
AuthUserFile /path/to/.htpasswd
Require valid-user
Order Deny,Allow
Deny from all
Allow from env=noauth
Satisfy any
<location />
SetEnvIf Request_URI "/callback/.*" REDIRECT_noauth=1
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/httpd/passwords/passwords
Order Deny,Allow
Satisfy any
Deny from all
Allow from env=REDIRECT_noauth
Require user yournickname
</location>
나는 다른 시도를 시도했지만 나를 위해 일한 것입니다. 다른 사람들에게 도움이되기를 바랍니다.
# Auth stuff
AuthName "Authorized personnel only."
AuthType Basic
AuthUserFile /path/to/your/htpasswd/file
SetEnvIf Request_URI "^/index.php/api/*" allow
Order allow,deny
Require valid-user
Allow from env=allow
Deny from env=!allow
Satisfy any
이렇게하면 /index.php/api/
로그인 할 필요없이 api url과 모든 url 이 열리고 다른 로그인 메시지가 표시됩니다.
예:
mywebsite.com/index.php/api
로그인 메시지없이 열림 로그인 메시지없이 mywebsite.com/index.php/api/soap/?wsdl=1
열림 mywebsite.com
먼저 로그인 메시지가 표시됨
보호하는 영역에 Wordpress와 같은 모든 것을 제어하는 모 놀리 식 PHP 스크립트가있는 경우 다른 접근 방식이 이와 같이 작동합니다. 다른 디렉토리에서 인증을 설정하십시오. '/'경로에 쿠키를 설정하는 index.php를 거기에 넣으십시오. 그런 다음 (예를 들어) Wordpress에서 쿠키를 확인하되 $ _SERVER [ 'REQUEST_URI']가 제외 된 URL인지 확인은 무시합니다.
공유 호스팅 플랫폼에서 RewriteRule은 "Satisfy any"와 함께 작동하는 환경 변수를 설정할 수 없습니다.
어떤 접근 방식을 사용하든 보호중인 페이지에 페이지 자체가 없을 때 인증 요청을 트리거하는 이미지, 스타일 시트 등이 포함되어 있지 않은지 확인하십시오.
루트 htaccess 파일에 아래 코드를 추가하고 관리자 URL, .htpasswd 파일 페이지를 변경하는 것을 잊지 마십시오.
<Files "admin.php">
AuthName "Cron auth"
AuthUserFile E:\wamp\www\mg\.htpasswd
AuthType basic
Require valid-user
</Files>
루트 폴더에 .htpasswd 파일을 만들고 아래에 사용자 이름과 암호를 추가합니다 (기본 사용자 이름 : admin 및 암호 : admin123 설정).
admin:$apr1$8.nTvE4f$UirPOK.PQqqfghwANLY47.
여전히 문제가 발생하면 알려주세요.
의도 한대로 기본 인증을 사용하지 않는 이유는 무엇입니까?
user:password@domain.com/callbacks/etc
참고 URL : https://stackoverflow.com/questions/8978080/htaccess-exclude-one-url-from-basic-auth
'ProgramingTip' 카테고리의 다른 글
왜 vertical-align : text-top; (0) | 2020.10.29 |
---|---|
Oracle의 더하기 (+) 표기법과 ANSI JOIN 표기법의 차이점은 무엇입니까? (0) | 2020.10.29 |
항아리 불일치! (0) | 2020.10.29 |
Xcode 8 : 함수 유형은 내 빌드를 깨는 인수를 생산할 수 없습니다. (0) | 2020.10.29 |
wordpress.com에서 블로그 코드를 작성하는 방법 (0) | 2020.10.29 |