Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] saml + octa
jol.us_
post
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?
(IMG:style_emoticons/default/cool.gif) 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ć.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jol.us_
post
Post #2





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
  1. <?php
  2. $state = "test";
  3. $nonce = "";
  4. $data = array(
  5. 'client_id' => '0oacd7ej5guj3oTbj0h7',
  6. 'response_type' => 'code',
  7. 'response_mode' => 'query',
  8. 'scope' => 'openid profile',
  9. 'redirect_uri' => 'http://localhost/okta/login_callback.php',
  10. 'state' => $state,
  11. 'nonce' => $nonce
  12. );
  13. $query = http_build_query($data);
  14.  
  15. header('Location: ' . 'https://dev-220754.oktapreview.com/oauth2/default/v1/authorize?'.$query);
  16. ?>



login_callback.php
  1. <?php
  2.  
  3. $state = "test";
  4.  
  5.  
  6. if(array_key_exists('state', $_REQUEST) && $_REQUEST['state'] !== $state) {
  7. throw new \Exception('State does not match.');
  8. }
  9.  
  10. if(array_key_exists('code', $_REQUEST)) {
  11. $exchange = exchangeCode($_REQUEST['code']);
  12.  
  13. }
  14.  
  15. function exchangeCode($code) {
  16.  
  17. $client_id = '0oacd7ej5guj3oTbj0h7';
  18. $client_secret = '4qDKVVp5h4JV7uVFt-dSKwMc_sBK8KqffOZZMw0M';
  19.  
  20. $authHeaderSecret = base64_encode( $client_id.':'.$client_secret );
  21. $dane = array(
  22. 'grant_type' => 'authorization_code',
  23. 'code' => $code
  24. );
  25. $query = http_build_query($dane);
  26. $headers = array(
  27. 'Authorization: Basic ' . $authHeaderSecret,
  28. 'Accept: application/json',
  29. 'Content-Type: application/x-www-form-urlencoded',
  30. 'Connection: close',
  31. 'Content-Length: 0'
  32. );
  33. $url = 'https://dev-220754.oktapreview.com/oauth2/default/v1/token?' . $query;
  34. $ch = curl_init();
  35. curl_setopt($ch, CURLOPT_URL, $url);
  36. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  37. curl_setopt($ch, CURLOPT_HEADER, 0);
  38. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  39. curl_setopt($ch, CURLOPT_POST, 1);
  40.  
  41.  
  42. $output = curl_exec($ch);
  43. $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  44. if(curl_error($ch)) {
  45. $httpcode = 500;
  46. }
  47. curl_close($ch);
  48.  
  49. return json_decode($output);
  50. }



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?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 14:49