Ich muss eine URL (oder noch besser ein Präfix) vom normalen htaccess Basic Auth-Schutz ausschließen. So etwas wie /callbacks/myBank
oder /callbacks/.*
Hast du irgendwelche Tipps, wie es geht?
Was ich nicht suche, ist, wie man eine Datei ausschließt. Dies muss eine URL sein (da dies eine Lösung ist, die auf dem PHP-Framework basiert und alle URLs mit mod_rewrite
an umgeleitet werden index.php
). Es gibt also keine Datei unter dieser URL. Nichts.
Einige dieser URLs sind nur Rückrufe von anderen Diensten (keine IP ist nicht bekannt, daher kann ich sie nicht aufgrund der IP ausschließen) und sie können nicht nach Benutzer / Passwort fragen.
Die aktuelle Definition ist so einfach wie:
AuthName "Please login."
AuthGroupFile /dev/null
AuthType Basic
AuthUserFile /xxx/.htpasswd
require valid-user
quelle
%{REQUEST_URI}
Wert die umgeschriebene Zeichenfolge ist. Für Cake 3 ist das so ziemlich immer so/webroot/index.php
. Möglicherweise müssen Sie einen alternativen Ansatz finden, z. B. die Verwendung von Cake selbst für die Authentifizierung von Routen.Mit SetEnvIf können Sie eine Variable erstellen, wenn die Anforderung mit einem Pfad beginnt, und dann die
Satisfy Any
Anweisung verwenden, um zu vermeiden, dass Sie sich anmelden müssen.Der Zulassungs- / Verweigerungsblock von Anweisungen besagt, dass der Zugriff für JEDEN verweigert wird , außer wenn ein gültiger Benutzer vorhanden ist (erfolgreiche BASIC-Authentifizierungsanmeldung) oder wenn die
noauth
Variable festgelegt ist.quelle
Order deny,allow
und es würde nicht funktionieren. Unnötig zu sagen, sehr frustrierend!Allow from env=REDIRECT_noauth
zum Umschreiben von URLs erforderlich. Könnte das Problem mit @vishal gewesen sein. Schauen Sie hier: [ stackoverflow.com/a/41092497/1285585]Allow from env=noauth
undAllow from env=REDIRECT_noauth
damit es funktioniert.Diese Lösung funktioniert ziemlich gut. Sie müssen nur die Whitelist definieren, die Sie durchlaufen möchten.
quelle
Ich habe die anderen Lösungen ausprobiert, aber das hat bei mir funktioniert. Hoffentlich hilft es anderen.
Dadurch können die API-URL und alle nachfolgenden URL-Zeichenfolgen
/index.php/api/
geöffnet werden, ohne dass Sie sich anmelden müssen, und alles andere wird zur Anmeldung aufgefordert.Beispiel:
mywebsite.com/index.php/api
wird geöffnet, ohne zur Anmeldung aufgefordert zu werden,mywebsite.com/index.php/api/soap/?wsdl=1
wird geöffnet, ohne zur Anmeldung aufgefordert zumywebsite.com
werden, wird zuerst zur Anmeldung aufgefordertquelle
quelle
Ein anderer Ansatz funktioniert so, wenn der Bereich, den Sie schützen, über ein monolithisches PHP-Skript verfügt, das alles steuert, wie z. B. Wordpress. Richten Sie die Authentifizierung mit in einem anderen Verzeichnis ein. Fügen Sie dort eine index.php ein, die ein Cookie auf den Pfad '/' setzt. Überprüfen Sie dann in Wordpress (zum Beispiel) das Cookie, umgehen Sie jedoch die Prüfung, ob $ _SERVER ['REQUEST_URI'] die ausgeschlossene URL ist.
Auf meiner gemeinsam genutzten Hosting-Plattform konnte RewriteRule keine Umgebungsvariable festlegen, die mit "Satisfy any" funktioniert.
Beachten Sie bei jedem Ansatz, dass die Seite, die Sie schützen, keine Bilder, Stylesheets usw. enthält, die eine Authentifizierungsanforderung auslösen, wenn die Seite selbst dies nicht tut.
quelle
Fügen Sie den folgenden Code zu Ihrer Root-htaccess-Datei hinzu und vergessen Sie nicht, Ihre Administrator-URL, die .htpasswd-Dateiseite, zu ändern.
Erstellen Sie eine .htpasswd-Datei in Ihrem Stammordner und fügen Sie unten den Benutzernamen und das Kennwort hinzu (legen Sie den Standardbenutzernamen fest: admin und das Kennwort: admin123).
Bitte lassen Sie mich wissen, wenn Sie noch Probleme haben.
quelle
Warum verwenden Sie Basic Auth nicht einfach so, wie es beabsichtigt war?
quelle