Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]SAML w PHP
slawek3422
post 10.05.2020, 13:40:06
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


Cześć.
Robię integrację urzędowej strony z Profilem Zaufanym. Ogarnąłem już wysyłanie koperty AuthnRequest, ładnie wyskakuje panel logowania do profilu zaufanego, po poprawnej autoryzacji PZ wysyła POST'em parametr SAMLart.

Problem polega na tym, że nie do końca wiem jak go przejąć. Firefox pokazuje ten parametr w konsoli. Za każdym razem jest inny. Przejęcie tego parametru jest wymagane do dokończenia dalszej komunikacji z PZ.

Próbowałem już z gotowymi bibliotekami jak php-saml ale dokumentacja nie pokazuje przykładów użycia i jestem w kropce.

https://github.com/onelogin/php-saml/blob/m...mo2/consume.php

Tam jest obsługa $_POST['SAMLResponse']... zmieniłem odpowiednio na SAMLart ale skrypt pokazuje że nie ma nic w tablicy POST ...

Może ktoś to już robił i może podpowiedzieć w jaki sposób przejąć w PHP odpowiedź SAML?

Ten post edytował slawek3422 10.05.2020, 13:46:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Pyton_000
post 10.05.2020, 21:22:57
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Czytałeś? http://www.extern.pl/artykuly/sso_epuap/
Go to the top of the page
+Quote Post
slawek3422
post 11.05.2020, 06:07:16
Post #3





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


Tak czytałem. Tam jest opisana integracja ze stary ePUAP'em. Wtedy było prościej bo SAMLart leciał GET'em smile.gif

Tak kto wygląda:
Go to the top of the page
+Quote Post
Pyton_000
post 11.05.2020, 11:16:04
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Ale jakie to ma znaczenie, skoro musisz wziąć ten parametr,wepchać go do koperty i puścić przeze soap ?
Ew pokaż z której dokumentacji korzystasz.
Go to the top of the page
+Quote Post
slawek3422
post 11.05.2020, 11:27:11
Post #5





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


ePUAP 1 był prostszy w integracji i mniej zabezpieczony. Wszystkie manuale, które są w sieci odnoszą się właśnie do starego ePUAPU. COI zamieściło na stronie ePUAP instrukcję dla integratorów ale zawierają one jedynie przykłady kopert SOAP ale tak tylko po łebkach, bo nie doszukałem się istotnych informacji np. które węzły podpisywać.

Jakby to było takie proste że wrzucam sobie $_POST['SAMLart'] do koperty SOAP to już dawno mam temat pozamiatany. Z tego co się doczytałem przez weekend i dziś od rana też to trzeba zrobić HTTP-POST binding.

Takie wywołanie na pewno nie działa:

  1. $SAMLart = @$_POST['SAMLart'];
  2. if (!empty($SAMLart)) {
  3. echo 'SAMLart: ', $SAMLart;
  4. die();
  5. } else {
  6. echo "Brak SAMLart";
  7. }
Go to the top of the page
+Quote Post
Pyton_000
post 11.05.2020, 11:52:14
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


a co jest w

Kod
var_dump(file_get_contents('php://input'));


Edited:

https://epuap.gov.pl/wps/wcm/connect/fecfa2...pdf?MOD=AJPERES

Na stronie 20 jest przykładowa koperta do wysłania ArtifactResolve

Ten post edytował Pyton_000 11.05.2020, 11:58:20
Go to the top of the page
+Quote Post
slawek3422
post 11.05.2020, 12:09:27
Post #7





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


  1. string(0) ""


Mam tą instrukcję. Tak jak pisałem - to jest tylko przykład koperty, brak jest informacji jak wyciągnąć dane, które należy włożyć do odpowiednich węzłów, a jak widzisz, SAMLart należy włożyć do <saml2p:Artifact></saml2p:Artifact>

Widzę SAMLart w Firefoxie ale nie wiem jak go przejąć smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 11.05.2020, 12:18:55
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Pokaż jeszcze output z $_SERVER
Generalnie SAMLArt powinno być normalnie w POST może gdzieś jakiś redirect robi ci się i traci post
Go to the top of the page
+Quote Post
slawek3422
post 11.05.2020, 12:25:01
Post #9





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


  1. (
  2. [HTTPS] => on
  3. [SSL_SERVER_S_DN_OU] => Domain Control Validated
  4. [SSL_SERVER_S_DN_OU_1] => PositiveSSL
  5. [SSL_SERVER_S_DN_CN] => ...
  6. [SSL_SERVER_I_DN_C] => GB
  7. [SSL_SERVER_I_DN_ST] => Greater Manchester
  8. [SSL_SERVER_I_DN_L] => Salford
  9. [SSL_SERVER_I_DN_O] => Sectigo Limited
  10. [SSL_SERVER_I_DN_CN] => Sectigo RSA Domain Validation Secure Server CA
  11. [SSL_SERVER_SAN_DNS_0] =>...
  12. [SSL_SERVER_SAN_DNS_1] => ...
  13. [SSL_VERSION_INTERFACE] => mod_ssl/2.4.43
  14. [SSL_VERSION_LIBRARY] => OpenSSL/1.1.1c
  15. [SSL_PROTOCOL] => TLSv1.3
  16. [SSL_SECURE_RENEG] => false
  17. [SSL_COMPRESS_METHOD] => NULL
  18. [SSL_CIPHER] => TLS_AES_128_GCM_SHA256
  19. [SSL_CIPHER_EXPORT] => false
  20. [SSL_CIPHER_USEKEYSIZE] => 128
  21. [SSL_CIPHER_ALGKEYSIZE] => 128
  22. [SSL_CLIENT_VERIFY] => NONE
  23. [SSL_SERVER_M_VERSION] => 3
  24. [SSL_SERVER_M_SERIAL] => F7DF740FA9D88BB3272B2E034AF1A385
  25. [SSL_SERVER_V_START] => Jul 16 00:00:00 2019 GMT
  26. [SSL_SERVER_V_END] => Jul 15 23:59:59 2020 GMT
  27. [SSL_SERVER_S_DN] => CN=...,OU=PositiveSSL,OU=Domain Control Validated
  28. [SSL_SERVER_I_DN] => CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB
  29. [SSL_SERVER_A_KEY] => rsaEncryption
  30. [SSL_SERVER_A_SIG] => sha256WithRSAEncryption
  31. [SSL_SESSION_ID] => 8c32e90de377c1a39cc3050642c1d30886dafc55bdb1baa83b36947f3449c292
  32. [SSL_SESSION_RESUMED] => Resumed
  33. [HTTP_HOST] => ...
  34. [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
  35. [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  36.   [HTTP_ACCEPT_LANGUAGE] => pl,en-US;q=0.7,en;q=0.3
  37.   [HTTP_ACCEPT_ENCODING] => gzip, deflate, br
  38.   [HTTP_REFERER] => <a href="https://pz.gov.pl/dt/SingleSignOnService" target="_blank">https://pz.gov.pl/dt/SingleSignOnService</a>
  39.   [HTTP_CONNECTION] => keep-alive
  40.   [HTTP_COOKIE] => PHPSESSID=05cm9pdv21amnvj85cfn0tghpo
  41.   [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
  42.   [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
  43.   [LD_LIBRARY_PATH] => /usr/local/apache/lib
  44.   [SERVER_SIGNATURE] =>
  45.   [SERVER_SOFTWARE] => Apache/2.4.43 (Unix) OpenSSL/1.1.1c PHP/7.4.5
  46.   [SERVER_NAME] => ...
  47.   [SERVER_ADDR] => ...
  48.   [SERVER_PORT] => 443
  49.   [REMOTE_ADDR] => ...
  50.   [DOCUMENT_ROOT] => /usr/local/apache/htdocs
  51.   [REQUEST_SCHEME] => https
  52.   [CONTEXT_PREFIX] =>
  53.   [CONTEXT_DOCUMENT_ROOT] => /usr/local/apache/htdocs
  54.   [SERVER_ADMIN] => ...
  55.   [SCRIPT_FILENAME] => /usr/local/apache/htdocs/callback/index.php
  56.   [REMOTE_PORT] => 51231
  57.   [GATEWAY_INTERFACE] => CGI/1.1
  58.   [SERVER_PROTOCOL] => HTTP/1.1
  59.   [REQUEST_METHOD] => GET
  60.   [QUERY_STRING] =>
  61.   [REQUEST_URI] => /callback/
  62.   [SCRIPT_NAME] => /callback/index.php
  63.   [PHP_SELF] => /callback/index.php
  64.   [REQUEST_TIME_FLOAT] => 1589196112.487
  65.   [REQUEST_TIME] => 1589196112
  66. )


Robiłem też tak, że przy wywołaniu skryptu miał mi zrzucać $_POST do pliku, też pomyślałem o przekierowaniu. Plik był pusty ...
Go to the top of the page
+Quote Post
Pyton_000
post 11.05.2020, 12:33:38
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Kod
[REQUEST_METHOD] => GET

Więc to nie jest POST

Widnieje za to nagłówek HTTP_UPGRADE_INSECURE_REQUESTS
Czyli respons prawdopodobnie leci na GET http:// z rządaniem do https

Zrób sobie w pliku:

Kod
file_put_content('output.log', var_export($_POST, true), FILE_APPEND);

i zobacz czy coś masz.
Go to the top of the page
+Quote Post
slawek3422
post 12.05.2020, 12:06:08
Post #11





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

Ostrzeżenie: (0%)
-----


Zawartość pliku:
  1. )


Temat do zamknięcia.
Okazało się że powodem problemów był Apache. Po odwiedzeniu adresu http://www.......pl/callback apache dodawał na końcu slash a pod spodem robił przekierowanie 301.
Wystarczyło to wyłączyć i SAMLart już jest w tablicy POST smile.gif
Dziękuję Pyton_000 za poświęcony czas i energię smile.gif
Go to the top of the page
+Quote Post
Pyton_000
post 12.05.2020, 21:48:36
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Jak to zwykle bywa - pierdoła a krwi napsuje.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:10