PHP websocket autentizace

PHP websocket autentizace
« kdy: 07. 04. 2021, 09:03:22 »
Aktualne mam websocket, ktery klientovi posila zpravy. Pred obdrzenim zprav se musi klient autentizovat. Autentizace je provadena predanim tokenu v url wss://dummyServer/getMessage?token=clientstoken. Jak muzu lepe vyresit autentizaci? Websocket bezi za proxy, ktera zajistuje TLS. Autentizaci webserverem (Apache) bych se rad vyhnul.


none_

Re:PHP websocket autentizace
« Odpověď #1 kdy: 07. 04. 2021, 09:52:27 »
Co je spatneho na tokenu? Pokud to mate spravne implementovane, tak token by mel byt v pohode. Bylo by dobre popsat, co se snazite vyresit.

Re:PHP websocket autentizace
« Odpověď #2 kdy: 07. 04. 2021, 12:25:37 »
Neni lepsi token poslat v prvni zprave az po navazani spojeni?

none_

Re:PHP websocket autentizace
« Odpověď #3 kdy: 07. 04. 2021, 13:01:19 »
Rekl bych, to zalezi... Porad jste nerekl, co se snazite udelat.

Chcete povolit i ne-authorizovanou komunikaci?
Jak ten token overujete?
Je mozne vyzadovat jiny token pro ruzne zpravy?

Jak ja chapu websockets, tak je to jen persistentni spojeni mezi klientem a serverem. Moznosti, jak takovou komunikaci zabezpecit jsou tuny. Stejne tak jako v pripade klasickeho HTTP spojeni.

Re:PHP websocket autentizace
« Odpověď #4 kdy: 07. 04. 2021, 13:33:32 »
Nechci aby byl token spatritelny v URL. Hledam nejake elegantnejsi reseni.
Jako nejlepsi varianta mi prislo token vytahnout z cookie a odeslat v prvni zprave po navazani spojeni s websocketem.
Pokud websocket neobdrzi validni token, spojeni zavre.
Token je generovany pro kazdeho prihlaseneho uzivatele a je ulozeny v DB. Zpetne se pomoci tokenu dohleda identita a autorizace uzivatele.
Prihlasovani pomoci tokenu resim, protoze websocket v PHP pri volani session_start() vytvori nove id misto pouziti stavajiciho coz je pochopitelne...


none_

Re:PHP websocket autentizace
« Odpověď #5 kdy: 07. 04. 2021, 14:52:18 »
Co jsem tak rychle koukal, tak bych doporucoval nevymyslet kolo a pouzit neco jako Ratchet, coz resi spoustu problemu za vas.

Jinak k vasemu dotazu. Podle dokumentace Ratchetu kazda zprava obsahuje kompletni hlavicky jako v pripade klasickeho HTTP requestu. Tzn. muzete si ten token priplacnout kam se vam zrovna zlibi. At uz primo do dat nebo do nejaky hlavicky. Dokonce ho nemusite ani posilat, pokud mate nejakou session, kterou budete sdilet.

Re:PHP websocket autentizace
« Odpověď #6 kdy: 07. 04. 2021, 15:40:02 »
Diky na Ratchet mrknu.