Prázdná HTTP hlavička Authorization

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
chikeet
Člen | 160
+
0
-

Zdravím,
v presenteru (v metodě, která se volá ze startup) mám tohle:

$header = $this->getHttpRequest()->getHeader('Authorization');

a když si následně dumpnu $header, je v ní NULL.

Request posílám přes tenhle nástroj a hlavičku Authorization jsem tam zkoušela nastavit jak přes Authentication, tak přes Headers. V requestu v uvedeném nástroji ta hlavička v obou příadech je a není prázdná. Co dělám špatně?

Jan Tvrdík
Nette guru | 2595
+
0
-

@chikeet A co jiné hlavičky? Není možné, že ti tu hlavičku zahazuje nějaká proxy, Apache nebo nginx?

chikeet
Člen | 160
+
0
-

@JanTvrdík Díky, to bude pravděpodobně ono. Při lokálním testování je to v pohodě, takže s nejvyšší pravděpodobností je problém v nastavení serveru nebo proxy. Jedeme na Amazonu s Dockerem a teprv se s tím učíme, tak to nejspíš bude souviset s tím.

chikeet
Člen | 160
+
0
-

Tak jsme po dlouhých bojích s konfigurací došli k tomu, že bez Nette se na produkci hlavičky neztrácí, ale s Nette ano. Nějaké nápady, jak to řešit? Cokoliv?

Lokálně mi to funguje bez problémů, i když tahám auth hlavičku v presenteru přes $this->getHttpRequest()->getHeader('Authorization').

Na produkci to nevytáhnu ani z $_SERVER['PHP_AUTH_USER'] a $_SERVER['PHP_AUTH_PW'].

Lokálně vyvíjím zatím na Xamppu s PHP 5.6.12, na produkci máme 7.1.0. Nemůže to nějak souviset s tím?

Jan Mikeš
Člen | 771
+
0
-

Ahoj, vim ze ti to asi moc nepomuze ale mel jsem uplne stejny problem a nedokazal vyresit, proto jsme zacali pouzivat header X-Authorization jako nahradu.

Editoval Jan Mikeš (27. 2. 2017 13:56)

CZechBoY
Člen | 3608
+
0
-

Se mi nezdá, že by Nette ovlivňovalo $_SERVER proměnnou. Určitě jste to testovali pořádně?
Pro to AUTH_USER+PW je potřeba mít asi nastavenou http autentizaci v htaccess, ne?

matopeto
Člen | 395
+
0
-

Mozes skusit vydebutgovat kde to zmizne. Takto nette berie headers: https://github.com/…tFactory.php#L178

Martk
Člen | 661
+
+3
-

Tady se to řešilo a zdá se, že i vyřešilo

Co jsem zjistil (nevychází to z mojích znalostí), tak proměnná $_SERVER nikdy neobsahuje klíč Authorization, zatímco funkce apache_request_headers ano. Takže máš pravděpodobně na localu funkci apache_request_headers, ale na amazonu ne.

Editoval Martk (27. 2. 2017 16:36)

chikeet
Člen | 160
+
+2
-

Tak Nette je v tom nevinně :-) (Mně to bylo divné…)

@Martk díky, nakonec zafungovalo tohle:
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
(http://stackoverflow.com/a/26986394)

@JanMikeš použití jiné hlavičky jsme zvažovali jako nouzové řešení, ale měli bychom s tím režii my i klient, blbě by se to testovalo atd., takže jsem fakt ráda, že se to podařilo rozchodit standardní cestou :-)

Jinak na localu jsem žádné zvláštní nastavení nepotřebovala, nejspíš díky apache_request_headers, nebo nějaké jiné šťastné souhře náhod.

Editoval chikeet (28. 2. 2017 15:21)