Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Hydepark _ Autoryzacja z roznych domen

Napisany przez: nospor 15.02.2022, 17:17:21

Hejka,
mam dwa serwisy, jeden na domenie A.pl a drugi na domenie B.pl.
Sa to dwie rozne domeny.
Serwis A posiada autoryzacje i uzytkowniki moze przegladac serwis A bedac zalagowanym lub nie.
Serwis B nie posiada autoryzacji. Czy mozna w jakis sposob stwierdzic, czy uzytkownik bedac w serwisie B, jest zalogowany w serwisie A? Mowa o tej samej przegladarce.

Pewnie bez jakis przekierowan sie nie obejdzie?

Napisany przez: Salvation 15.02.2022, 20:59:07

Można spróbować wdrożyć SSO. Wtedy logowanie masz na stronie B, ale autoryzacja leci przez A.
Inne rozwiązanie - to jeżeli logowanie masz jako stateless i używasz np. zapisanego tokenu po stronie frontu (localstorage), to można zaimplementować endpoint na A, który będziesz pingować z tym tokenem z B i w odpowiedzi dostawać będziesz np. `boolean`.

Napisany przez: nospor 15.02.2022, 21:25:34

Serwis B nie ma i nie potrzebuje w ogole logowania. Jedyne co serwis B potrzebuje to info, czy uzytkownik jest zalogowany w serwisie A.
Niestety sa to dwie rozne domeny wiec nie moge uzyc ciastek powiedzmy. Rozwiazanie z tokenem wydaje sie ok ale nie rozumiem za bardzo. Skad serwis A bedzie wiedzial ze token z B nalezy do usera z A?

Napisany przez: Salvation 15.02.2022, 21:56:00

Pracowałeś już może z tokenami JWT i REST API? https://auth0.com/docs/secure/security-guidance/data-security/token-storage

Napisany przez: viking 16.02.2022, 07:39:33

Rozwiązania cross-domenowe są zabronione więc jeśli nie masz np jakiegoś wspólnego punktu logowania (np oauth) to może być ciężko.

Napisany przez: nospor 16.02.2022, 10:01:01

Tak tez myslalem, wolalem sie jednak upewnic. Dobra, dzieki, pozostaje wiec praca chalupnicza nad rozwiazaniem biggrin.gif

Napisany przez: vokiel 16.02.2022, 10:25:09

Pozostaje jakiś fingerprinting przeglądarki i forever cookies / pingowanie w tle wspólnej domeny.

Napisany przez: nospor 16.02.2022, 10:57:54

No padl pomysl by serwis B robil jakis token, pewnie fingerprint, przekierowal na serwis A z tym tokenem, serwis A zapisze sobie do bazy z info czy jest zalogowany czy nie i przekieruje na serwis B i wted sewis B zrobi wewnetrzny call do A by pobrac info czy zalogowany czy nie.
Proste, ale uzytkownik przez ulemk sekundy zobaczy dwa skoki na stronie do serwisu A a potem do B spowrotem.

Oczywiscie token wazy czasowo by za kazdym razem odswiezeniem strony B nie skakac ciagle do A

Napisany przez: vokiel 16.02.2022, 18:38:39

A czy potrzebujesz aż przekierowania? Nie lepiej XHR z zapytaniem czy jest zalogowany czy nie. Możesz przecież mieć info o tym w bazie wraz z fingerprintem wyliczonym na tych samych parametrach.

Napisany przez: Salvation 16.02.2022, 18:51:02

O tym pisałem... Logujesz się na A gdzie generuje się token. Token zapisujesz w localstorage i masz do niego dostęp w nowej karcie gdzie idziesz na stronę B. Pobierasz token z localstorage i pchasz XHR-em Z B na endpoint do A, który zwraca np. boolean i robisz sobie co chcesz z tą wartością.

Napisany przez: nospor 17.02.2022, 08:55:27

A widzicie, no to mi umknelo z waszych wypowiedzi wczesniej. Dzieki!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)