1

Ich habe eine Rails App mit Carrierwave Uploadern, die für die Verwendung von carrierwave-aws auf einem S3 Bucket konfiguriert sind.Rails S3 - CloudFront 401 Fehlerauslöser Basic Auth Popup

Die Berechtigungen für diese Eimer waren schlecht, aber hoffentlich sie Ich reparierte und jetzt Uploads scheinen gut zu funktionieren (und ich überprüfte die Berechtigungen aus einer einzigen Datei, wird öffentlich Lese geprüft)

Die Rails-Anwendung ist Cloudfront mit , die für die Behandlung von "normalen" Assets (css, js usw.) und mit carrierwave-aws konfiguriert wurde.

aber ich bin immer noch immer 401 Fehler, und schlimmer noch, wenn diese einer popu Auth HTTP Basic geschieht auf dem Bildschirm erscheint, für meine Verteilung nach einem Passwort gefragt

"NetworkError: 401 Unauthorized - https://xxxxxxx.cloudfront.net/uploads/user/avatar/xxxxxx/thumb_avatar.jpg "

Der obige Fehler löst ein HTTP Basic Auth Fenster frage nach dem user/pw für xxx.cloudfront.net

Wenn dies verknüpft ist, stellt sich heraus, dass ich tatsächlich diese Art von Auth auf meiner Rails-Website selbst habe (bevor wir zur Produktion übergehen).

Auf CloudFront habe ich zwei Ursprünge konfiguriert: mein Rails-Server (und css/js sind ok also denke ich, das ist in Ordnung) und der S3-Bucket (weiß nicht, wie ich das wirklich testen kann)

So

  • Wie kann ich meine Rails überprüfen -> Carrierwave-aws -> Cloudfront Pipeline funktioniert gut? (Uploads sind in Ordnung, ich kann einfach nicht aus dem Browser nach einem Upload lesen)
  • Wie kann ich HTTP Basic Auth von der Website deaktivieren, falls ein 401 Fehler erscheint?

EDIT: Ich Setup Grund Auth in Rails Application

def authenticate 
    if ENV["HTTP_BASIC_AUTH"] == "true" 
     authenticate_or_request_with_http_basic do |username, password| 
     username == "wxx" && password == "xxx!" or 
     end 
    end 
    end 
+0

Wo haben Sie die grundlegende Authentifizierung Konfiguration in Apache oder etwas anderes eingestellt? denn das ist die Ursache der Cloud-Front-Probleme, denke ich. – error2007s

+0

Hmm, ja, das ist in meinem Rails ApplicationController gemacht. Aber dann fragt das Popup nach einer cloudfront URL http Basic Auth, und selbst wenn ich die user/pw credentials meines Applicationcontrollers eingebe, funktioniert es nicht. –

+0

Aufgrund der grundlegenden Authentifizierung kann die Cloud Front die Dateien vom übergeordneten Server nicht zwischenspeichern? Versuchen Sie, die Authentifizierung zu deaktivieren und dann zu überprüfen, ob sie weiterhin auftritt. – error2007s

Antwort

0

A 401 HTTP-Antwort ist natürlich, sollte Pop-up einen Browser Aufforderung auszulösen. Wenn Sie das nicht wollen, ist Ihre Lösung keine Authentifizierung in Ihrer Anwendung.

Es scheint jedoch, als wäre die Lösung, die Ihnen an diesem Punkt am hilfreichsten wäre, die Weiterleitung des Browserversuchs zum Senden von Anmeldeinformationen an den Ursprungsserver zu ermöglichen. Dazu muss CloudFront den Header Authorization: an Ihren Ursprung weiterleiten. Standardmäßig wird dieser Anforderungsheader (wie die meisten Anforderungsheader) von CloudFront verworfen und nicht an den Ursprung gesendet.

Whitelist this header im entsprechenden Cache-Verhalten, sodass CloudFront es weiterleitet und Ihr Zugriffssteuerungsmechanismus wie erwartet funktionieren sollte.

Denken Sie daran, dass Änderungen an CloudFront-Distributionen ein paar Minuten dauern. Warten Sie, bis die Verteilung vor dem Testen in den Bereitstellungsstatus zurückgekehrt ist.