[php] saml + octa |
[php] saml + octa |
9.10.2017, 11:22:28
Post
#1
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) |
Witam,
Mam serwis na standarowym vhoscie, który ma standardową autoryzację na zwykłych sesjach php - każdy użytkownik ma swoje dane login, email, hasło, imię itd. Pojawiła się kwestia zupełnie dla mnie obca - Single Sign On. Firma chce automatycznie logować na stronę użytkowników ze swojej sieci firmowej - używając do tego SAML/Octa. Czy ktoś się z tym spotkał i wie jak to wygląda? 1. Jak to jest tworzone od strony Octa? Ktoś dodaje moją stronę jako aplikacje, a następnie dodaje użytkowników z loginem/hasłem z mojego serwisu? 2. Jak i kiedy następuje logowanie. a) Wchodzi na moją stronę i jest automatycznie zalogowany czy może widzi formularz logowania OCTA? W jaki sposób ja mam rozpoznawać użytkownika i utrzymywać sesję logowania? Byłem na stronie https://developer.okta.com/use_cases/authentication/ ale totalnie nic z tego nie rozumiem Proszę jak ktoś zna temat to nich mi pomoże to zrozumieć. -------------------- run Forest run ...
|
|
|
9.10.2017, 15:43:15
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
A co oni rozumieją poprzez "automatyczne logowanie ze swojej sieci firmowej"?
Logowanie przez różne OKTA nie różni się praktycznie niczym od logowania np. przez fb poza tym, że jest to narzędzie w tym wyspecjalizowane i nie zajmuje się niczym innym. Standard OAUTH2 pozostaje niezmienny. Sugeruję najpierw zapoznać się z opisem standardu OAUTH2 a potem poczytać na stronie OKTA. Natomiast jeśli chodzi im o takie logowanie, że ktoś loguje się do intranetu (np. poprzez LDAP) a potem wchodzi na stronę firmową i jest już zalogowany, to wymaga to pewnego zachodu - trzeba udostępnić dla aplikacji webowej numery IP osób, które aktualnie są zalogowane do intranetu (poprzez jakieś IP), działa to mniej więcej tak: 1. Na stronę wbija gość, którego IP = 1.2.3.4 2. Strona odpytuje API i dowiaduje się, że pod tym IP jest właśnie zalogowany Jan Nowak 3. Synchronizujesz dane Nowaka i możesz np. ustawić mu sesję 4. W razie konieczności odpytujesz (np. LDAP) o dodatkowe dane Oczywiście trzeba rozwiązać problemy typu: człowiek wylogowuje się z sieci firmowej, czy wylogowanie z aplikacji ma wylogować z intranetu i tak dalej. |
|
|
10.10.2017, 12:56:09
Post
#3
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) |
Nie mam szukać nowego rozwiązania.
Firma ma u siebie wprowadzone "Single Sign On" przez OKTA i mam to wprowadzić na swojej stronie. W jaki sposób mam dostosować swój formularz logowania aby używał SAML dla OKTA? -------------------- run Forest run ...
|
|
|
10.10.2017, 13:47:24
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
No to powinno to być bardzo proste:
1. Zakładasz tam konto i tworzysz clienta/aplikację, client = twoja apka, która korzysta z API, każdy client ma id oraz secret (chyba, że korzystasz z tego, co już jest - tu trzeba się dowiedzieć) 2. Odpalasz URL w rodzaju: okta-costam/token/auth?client_id=1_test&response_type=code&redirect_uri=http://twoja-apka.pl pojawia się formularz logowania, po poprawnej autentykacji przekierowuje na twoja-apka.pl?code=qwerty - gdzie kod to krótkoterminowy (najczęściej kilka sekund) identyfikator, służący do pobrania tokenu w sposób: 3. okta-costam/token?client_id=1_test&client_secret=qwerty&grant_type=authorization_code&code=asdfg&redirect_uri=http://twoja-apka.pl 4. Dostajesz w odpowiedzi JSONA w stylu: Kod {"access_token":"MGFiODYwNDFkYWI5ZjA0NTNkNWExMjE0YWViMTA1NGQyMjAzNjIxNjRkODllMTQxYmMwYjQ2M2U2 NmJmODQzMQ","expires_in":43200,"token_type":"bearer","scope":null,"refresh_token":"MjY0ZjI1YTFlOWNhNDQyY2E1NTA2YWEwZmMxMmY4ZDAyZGIwNjgzYWQ5YzllNzg1ZDBlMjM5Yzc2 NjZhYTI5MQ"} 5. Używasz tokenu by odpytać API o usera. Jakiego używasz frameworka? Jak Symfony to jest masa bundli/sampli do obsługi tego, wystarczy zapewne skonfigurować, pierwsze z brzegu: https://github.com/okta/samples-php-symfony https://github.com/aerialship/SamlSPBundle |
|
|
10.10.2017, 14:10:58
Post
#5
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) |
Czyli login i hasło pochodzą z Okta, nie z mojej strony. Tak?
Jest możliwe pobranie jakiś danych zalogowanego usera - imię nazwisko, email? Nie znalazłem informacji z adresem URL z tokenem o którym piszesz. Założyłem konto i utworzyłem aplikację. Znalazłem jakiś widget: https://developer.okta.com/code/javascript/..._sign-in_widget Ale nie działa mi to. Gdy używam danych logowania z OKTA zwraca mi "Unable to connect to the server. Please check your network connection. Nie używam frameworka. Szukam właśnie jakiegoś gotowego przykładu ale nie widzę nic bez frameworka. Ten post edytował jol.us_ 10.10.2017, 14:11:40 -------------------- run Forest run ...
|
|
|
11.10.2017, 15:06:46
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Cytat Czyli login i hasło pochodzą z Okta, nie z mojej strony. Tak? - tak, taka jest idea tego, aby autoryzację wydzielić i współdzielić pomiędzy aplikacjami, user ma jeden email/login i hasło a inne pozostałe dane w zależności od tego, jaka to apka.Cytat Jest możliwe pobranie jakiś danych zalogowanego usera - imię nazwisko, email? - na pewno tego, co gwarantuje standard OAUTH i zapewne API Okta daje możliwość zapisania czegokolwiek, zapewne w układzie klucz->wartość, trzeba przejrzeć API:https://developer.okta.com/docs/api/resources/oauth2.html Cytat Nie znalazłem informacji z adresem URL z tokenem o którym piszesz. https://developer.okta.com/docs/api/resourc...request-a-tokenCytat Znalazłem jakiś widget: Zazwyczaj tego typu konglomeraty dają jakieś klasy PHP (a nawet bundle do Symfony), gotowe widoki, szablony, skrypty JS etc. Nie ma obowiązku używania tego, ale jest to wygodne.Cytat Nie używam frameworka. A jakie tego przyczyny? Teraz zamiast np. dociągnąć bundla do Symfony z obsługą OAUTH2 musisz rozkminić dokumentację protokołu oraz samemu wszystko zaimplementować.
|
|
|
12.10.2017, 10:24:13
Post
#7
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) |
Zazwyczaj tego typu konglomeraty dają jakieś klasy PHP (a nawet bundle do Symfony), gotowe widoki, szablony, skrypty JS etc. Nie ma obowiązku używania tego, ale jest to wygodne. A jakie tego przyczyny? Teraz zamiast np. dociągnąć bundla do Symfony z obsługą OAUTH2 musisz rozkminić dokumentację protokołu oraz samemu wszystko zaimplementować. Nie używam bo nie znam frameworka. Gdyby ich gotowe paczki mogły by być przeze mnie użyte to bym nie pisał na forum... Opis API jest właśnie dla mnie nie zbyt jasny - strasznie rozproszona ta dokumentacja. A ja nie chcę nic zaawansowanego - tylko zalogować użytkownika i pobrać jego dane. Zwykle z API wysyła się coś CURLem i dostaje się odpowiedź. Tutaj nic mi nie chce działać - żaden przykład z dokumentacji ani nawet też ten ich widget. Działam strasznie po omacku w tym temacie. -------------------- run Forest run ...
|
|
|
13.10.2017, 08:13:42
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Cytat Opis API jest właśnie dla mnie nie zbyt jasny - strasznie rozproszona ta dokumentacja - z dokumentacją zawsze jest problem, jak już jest to często nieczytelna albo po prostu kłamie - trzeba się przyzwyczaić.Sugeruję popatrzeć w kod aplikacji, które to implementują - na różnych githubach na pewno jest tego sporo - niestety trzeba trochę czasu poświęcić, wtedy wszystko powoli staje się jasne. Cytat Nie używam bo nie znam frameworka - to najwyższy czas poznać, dzisiaj żadnej poważniejszej aplikacji nie robi się bez frameworka.
|
|
|
13.10.2017, 10:13:29
Post
#9
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) |
Poznanie frameworka to nie jest kwestia 1/2 dni. A sprawa dla mnie pilna.
Robiłem research i przeglądałem dokumentację. Mam obecnie coś takiego: index.php
login_callback.php
Loguje się poprawnie. Jestem przekierowywany do pliku login_callback.php z wartością code. Jednak w funckji exchangeCode CURLINFO_HTTP_CODE zwraca Status 0 bool(false) Na prawdę brak mi już siły. Co robię źle? -------------------- run Forest run ...
|
|
|
17.10.2017, 07:55:58
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
1. Nie łatwiej zamiast CURLa użyć jakiś bibliotek lub nawet dodatków do przeglądarki do pisania requestów do API? Jest szybciej i wygodniej
2. Warto wiedzieć, że na zamianę kodu na token masz zazwyczaj tylko kilka sekund (ile dokładnie to powinno być w dokumentacji) 3. Musisz przede wszystkim okodować obsługę błędów, które zwraca API: https://developer.okta.com/docs/api/resourc...#list-of-errors 4. Cytat Co robię źle? - nie wiem, bo jestem słaby z CURLA, jednak wygląda na to, że request z jakiś powodów się nie powiódł, pewnie trzeba użyć funkcji curl_error. Obsługę API trzeba dobrze okodować, sprawdzać czy request wykonał się ok, czy API odpowiada i w końcu czy API nie zwróciło błędów i wszystko logować w układzie request - response.
|
|
|
18.10.2017, 11:37:10
Post
#11
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) |
Właśnie w tym problem, że nie zwraca błędu. Nic nie zwraca - mam pustą tablicę - może coś źle skonfigurowałem w panelu, nie wiem.
Ale i tak chyba muszę szukać tego od nowa bo to idzie przez bo to jest sposób pobierania danych przez OpenID, a uparto się aby to było w oparciu o SAML. Wszedłem na https://developer.okta.com/standards/SAML/index Ale tu juz w ogóle nic nie można znaleźć - bo dokumentacji właściwie nie ma. Utworzyłem apliację SAML, dostałem jakiś plik certykatu. Jest też jakies URL ktore po wywołaniu wraca do mnie postem z jakimiś zakodowanymi danymi - to chyba dane XML. Jak to odkodować? -------------------- run Forest run ...
|
|
|
19.10.2017, 12:57:05
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
SAML mi wygląda na jakąś szczególną implementacje SOAPa.
Jak to nie ma dokumentacji? Jak stworzyć aplikację: https://developer.okta.com/standards/SAML/s...on_in_okta.html Jak użyć PHP: https://developer.okta.com/code/php//simplesamlphp.html Dają gotowe kompomenty i opis do nich, wystarczy trochę posiedzieć przy tym. |
|
|
19.10.2017, 14:21:41
Post
#13
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) |
Aplikację utworzyłem.
Zainstalowałem simplesaml.php i nie za bardzo wiem do czego to mi sie ma przydać. Nic to nie mówi na temat jak zdekodowac otrzymany xml i jak przebiega komunikacja. Nic ponad instrukcję jak zainstalować simplesaml i uruchomic na okta na stronie nie ma. -------------------- run Forest run ...
|
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 10:18 |