Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: vesterna12 07. 04. 2021, 09:03:22

Název: PHP websocket autentizace
Přispěvatel: vesterna12 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.
Název: Re:PHP websocket autentizace
Přispěvatel: none_ 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.
Název: Re:PHP websocket autentizace
Přispěvatel: vesterna12 07. 04. 2021, 12:25:37
Neni lepsi token poslat v prvni zprave az po navazani spojeni?
Název: Re:PHP websocket autentizace
Přispěvatel: none_ 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.
Název: Re:PHP websocket autentizace
Přispěvatel: vesterna12 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...
Název: Re:PHP websocket autentizace
Přispěvatel: none_ 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.
Název: Re:PHP websocket autentizace
Přispěvatel: vesterna12 07. 04. 2021, 15:40:02
Diky na Ratchet mrknu.