Wątek przeniesiony 2017-11-27 14:03 z Newbie przez somekind. Powód: Niepoprawna kategoria forum

ePUAP – uwierzytelnianie na podstawie danych z Profilu Zaufanego

Odpowiedz Nowy wątek
2017-03-06 10:17
zapytajnik123
0

Dzień dobry :-)
Poszukuję osoby, która dobrze zna się na integracji różnych systemów zewnętrznych (php/java/itp.) z ePUAPem i ma pewne doświadczenia w temacie...
Sytuacja wygląda tak: mamy webową aplikację, do której dostęp jest ograniczony tylko dla zalogowanych użytkowników. Pytanie - czy można tak zintegrować aplikację, aby jako danych do uwierzytelnienia używała danych z Profilu Zaufanego? Użytkownik podczas logowania przekierowany byłby do strony ePUAP (PZ), po czym wracałby z powrotem do naszej aplikacji z odpowiednią flagą sukcesu lub porażki. Czy taki mechanizm możliwy jest do osiągnięcia?

edytowany 1x, ostatnio: furious programming, 2017-10-06 18:04

Pozostało 580 znaków

2017-10-21 21:10
ArekC
0
  1. Pierwszy krok - uzyskanie SAMLArtifact (dla środowiska testowego)

http://192.168.0.201/dt-integracja/index.php <- adres powrotny skonfigurowany po stronie DT
w katalogu config/certs/ pliki certyfikatu i klucza uzyskane od DT

<?php
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'lib/WSSESoap'.DIRECTORY_SEPARATOR.'WSSESoap.php');

use RobRichards\XMLSecLibs\XMLSecurityDSig;
use RobRichards\XMLSecLibs\XMLSecurityKey;
use RobRichards\XMLSecLibs\XMLSecEnc;

$SAMLart = @$_POST['SAMLart'];
if (!empty($SAMLart)) {

    // powodzenie
    echo 'SAMLart: ', $SAMLart;
    die();
}

echo '<xmp>';
require_once(dirname(__FILE__).DIRECTORY_SEPARATOR."lib".DIRECTORY_SEPARATOR.'Tools.php');

$priv_key = './config/certs/key.key';
$cert = './config/certs/cert.crt';
$appUrl = 'http://192.168.0.201/dt-integracja/';
$loginPage = 'index.php';
$issuer = 'UGCisy';
$SSO_URL = 'https://int.pz.gov.pl/dt/SingleSignOnService';

// składanie AuthnRequesta

$AssertionConsumerServiceURL = $appUrl.$loginPage;
$ID = Tools::getGUID();
$IssueInstant = gmdate("Y-m-d\TH:i:s\Z");
$Destination = $SSO_URL;
$Issuer = $issuer;

$ar = <<<EOR
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" AssertionConsumerServiceURL="$appUrl$loginPage" Destination="$SSO_URL" ID="$ID" IssueInstant="$IssueInstant" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" Version="2.0"><saml2:Issuer>$Issuer</saml2:Issuer></saml2p:AuthnRequest>
EOR;

        $doc = new DOMDocument();
        $doc->loadXML($ar);

        $objDSig = new XMLSecurityDSig();
        $objDSig->setCanonicalMethod('http://www.w3.org/2001/10/xml-exc-c14n#');

        $objDSig->addReference(
            $doc,
            XMLSecurityDSig::SHA1,
            array('http://www.w3.org/2000/09/xmldsig#enveloped-signature', 'http://www.w3.org/2001/10/xml-exc-c14n#'),
            array('force_uri' => true)
        );

        $objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type'=>'private'));
        $objKey->loadKey(file_get_contents($priv_key), FALSE);

        $objDSig->sign($objKey);
        $objDSig->add509Cert(file_get_contents($cert));

        $objDSig->appendSignature($doc->documentElement);
        var_dump($doc->saveXML());

        $ar_proc = base64_encode($doc->saveXML());

echo '</xmp>';
?>

<form action='<?php echo $SSO_URL; ?>' method='POST'>
    <input type='hidden' name='SAMLRequest' value='<?php echo $ar_proc; ?>'>
    <input type="hidden" name="RelayState" value="token" />
    <input type='submit' value='go! go!'>
</form>

Pozostało 580 znaków

2017-10-23 21:59
0

Może komuś pomoże poniższy artykuł:
http://blog.apilia.pl/2017/04[...]nie-przez-epuap-dostawca.html

Pozostało 580 znaków

2017-11-20 12:06
0

Witam,

udało mi się zintegrować z EPUAP-em. SSO działa poprawnie, dostaję TGSID na podstawie którego mogę pobrać dane o użytkowniku z usługi TpUserInfo. Dodatkowo integrowałem się także z innymi usługami takimi jak np. WS-SKRYTKA, WS-PULL itp. Integracje, które implementowałem są w postaci mikroserwisów napisanych w Javie. Mikroserwisy są samodzielnymi aplikacjami backendowymi, stanowią wrapper na API epuapu dzięki czemu komunikacja odbywa się teraz przez RESTFul, a nie SOAP. Obecna architektura pozwala na ukrycie zagmatwanej logiki EPUAP-u dzięki czemu aplikacja kliencka może w dużo łatwiejszy sposób komunikować się z EPUAP.

Jeśli ktoś nadal ma problem z integracją proszę o wiadomość na priv.

Pozdrawiam,
Kuba

edytowany 1x, ostatnio: kub3l, 2017-11-20 12:27

Pozostało 580 znaków

2017-11-20 13:27
0

Hej Kuba

Czy w rzeczywistosci TpUserInfo zwraca wiecej informacji o osobie anizeli widnieje to w dokumentacji? Jest informacje o nr PESEL oraz adres?

pozdrawiam
Grzegorz

kub3l napisał(a):

Witam,

udało mi się zintegrować z EPUAP-em. SSO działa poprawnie, dostaję TGSID na podstawie którego mogę pobrać dane o użytkowniku z usługi TpUserInfo. Dodatkowo integrowałem się także z innymi usługami takimi jak np. WS-SKRYTKA, WS-PULL itp. Integracje, które implementowałem są w postaci mikroserwisów napisanych w Javie. Mikroserwisy są samodzielnymi aplikacjami backendowymi, stanowią wrapper na API epuapu dzięki czemu komunikacja odbywa się teraz przez RESTFul, a nie SOAP. Obecna architektura pozwala na ukrycie zagmatwanej logiki EPUAP-u dzięki czemu aplikacja kliencka może w dużo łatwiejszy sposób komunikować się z EPUAP.

Jeśli ktoś nadal ma problem z integracją proszę o wiadomość na priv.

Pozdrawiam,
Kuba

Pozostało 580 znaków

2017-11-20 14:27
0

Dane jakie są zwracane w odpowiedzi to tak jak to widać w dokumentacji: accountEmailAddress oraz claimedRole, zawartość claimedRole przedstawiam poniżej:

<?xml version="1.0" encoding="UTF-8"?>
<ppZP:PodpisZP xmlns:ppZP="http://crd.gov.pl/xml/schematy/ppzp/" xmlns:os="http://crd.gov.pl/xml/schematy/osoba/2009/03/06/">
   <ppZP:DaneZP>
      <ppZP:DaneZPOsobyFizycznej>
         <os:Nazwisko rodzajCzlonu="pierwszy">Kowalski</os:Nazwisko>
         <os:Imie>Jan</os:Imie>
         <os:ImieDrugie>Krystian</os:ImieDrugie>
         <os:PESEL>********</os:PESEL>
         <ppZP:IdZaufanegoProfilu>********</ppZP:IdZaufanegoProfilu>
         <ppZP:IdKontaUzytkownikaEpuap>********</ppZP:IdKontaUzytkownikaEpuap>
      </ppZP:DaneZPOsobyFizycznej>
   </ppZP:DaneZP>
   <ppZP:DanePodpisu>
      <ppZP:IdKontaUzytkownikaEpuap>********</ppZP:IdKontaUzytkownikaEpuap>
      <ppZP:IdPolitykiAutoryzacji>2</ppZP:IdPolitykiAutoryzacji>
   </ppZP:DanePodpisu>
</ppZP:PodpisZP>

Dodam, że wynik nie jest skopiowany z dokumentacji, a jest faktyczną odpowiedzią jaką dostaję w swojej aplikacji.
PS. Część danych wykropkowałem, oczywiście w miejsce gwiazdek EPUAP wstawia prawdziwe dane.

grzesiek00 napisał(a):

Hej Kuba

Czy w rzeczywistosci TpUserInfo zwraca wiecej informacji o osobie anizeli widnieje to w dokumentacji? Jest informacje o nr PESEL oraz adres?

pozdrawiam
Grzegorz

kub3l napisał(a):

Witam,

udało mi się zintegrować z EPUAP-em. SSO działa poprawnie, dostaję TGSID na podstawie którego mogę pobrać dane o użytkowniku z usługi TpUserInfo. Dodatkowo integrowałem się także z innymi usługami takimi jak np. WS-SKRYTKA, WS-PULL itp. Integracje, które implementowałem są w postaci mikroserwisów napisanych w Javie. Mikroserwisy są samodzielnymi aplikacjami backendowymi, stanowią wrapper na API epuapu dzięki czemu komunikacja odbywa się teraz przez RESTFul, a nie SOAP. Obecna architektura pozwala na ukrycie zagmatwanej logiki EPUAP-u dzięki czemu aplikacja kliencka może w dużo łatwiejszy sposób komunikować się z EPUAP.

Jeśli ktoś nadal ma problem z integracją proszę o wiadomość na priv.

Pozdrawiam,
Kuba

edytowany 4x, ostatnio: kub3l, 2017-11-20 14:36

Pozostało 580 znaków

2017-11-20 15:32
0

Ok, to jest to co potrzebuje, dzieki za informacje.

Pozostało 580 znaków

2017-11-27 10:37
0

Witam,

postanowiłem napisać ten post ze względu na ogromne zainteresowanie tematem tworzenia konta testowego w EPUAP na potrzeby wykonania integracji z usługą “Dostawca tożsamości” inaczej mówiąc SSO (https://int.pz.gov.pl/dt/SingleSignOnService ). Dostałem wiele wiadomości prywatnych z pytaniami jakie kroki muszą zostać poczynione aby otrzymać upragniony login i hasło wraz ze wszystkimi uprawnieniami potrzebnymi do przeprowadzenia integracji. Wszystkie wnioski/prośby jakie muszą zostać wystosowane do administratorów EPUAP składa się drogą mailową na adres: [email protected]

Procedura wygląda następująco:

1) Utworzenie konta na platformie testowej dostępnej pod adresem https://int.epuap.gov.pl. Procedura tworzenia konta nie różni się wiele od tej dostępnej w wersji produkcyjnej EPUAP. Podczas tworzenia konta warto wiedzieć, że możemy podać dowolny numer telefonu ponieważ EPUAP testowy nie wysyła sms-ów. Kod autoryzacyjny potrzebny w procesie rejestracji to: 12345678. Pole “PESEL” powinno posiadać prawidłową wartość ponieważ będzie ono później wykorzystywane do potwierdzenia profilu zufanego. Testowy EPUAP niestety nie radzi sobie z wartością nieprawidłową, nie istnieje żadna zaślepka pozwalająca pominąć podanie numeru PESEL.

2) Wystąpienie z wnioskiem o nadanie roli “Instytucja Publiczna” dla konta utworzonego w punkcie numer 1. Treść wiadomości musi posiadać informacje jednoznacznie identyfikujące nasze konto testowe takie jak imię, nazwisko, login oraz informację jak ma się nazywać nasza testowa instytucja publiczna np. StGliwice. Jeśli rola “Instytucja Publiczna” zostanie nadana to podczas logowania do EPUAP-u testowego będzie zadawane pytanie jako jaki podmiot chcemy się zalogować. Osoba zarejestrowana w punkcie 1 stanie się administratorem konta instytucji publicznej.

3) Wniosek o wydanie certyfikatu testowego. Certyfikat to plik z rozszerzeniem *.p12 za pomocą, którego zewnętrzna aplikacja prosząca o dostęp do usługi “SSO” może być zidentyfikowana. Zapytania SOAP wysyłane do wspomnianej usługi muszą być podpisywane tym certyfikatem.

4) Zarejestrowanie systemu w konsoli Drako https://konsolahetman-int.epuap.gov.pl/DracoConsole . Rejestracja systemu odbywa się przez zalogowanie do konsoli Drako (jeśli już posiadamy rolę Instytucja Publiczna), następnie należy kliknąć z lewej strony “Systemy” => “Nowy system”. Nazwa systemu zostanie wygenerowana automatycznie, w pole “certyfikat” należy wkleić wspomniany wcześniej certyfikat przetransformowany z .p12 do .pem (X509). Certyfikat w postaci *.pem wygląda następująco:
-----BEGIN CERTIFICATE-----
{CIĄG ZNAKÓW CERTYFIKATU}
-----END CERTIFICATE-----

5) Złożenie wniosku o profil zaufany na koncie testowym. Procedurę wykonuje się po uprzednim zalogowaniu się na konto i kliknięciu w prawym górnym rogu: „Moje profile zaufane” => „Złóż wniosek”. Złożenie wniosku wymaga następnie potwierdzenia profilu zaufanego. W produkcyjnej wersji aplikacji wymaga to wizyty np. w banku lub urzędzie, który ma uprawnienia aby potwierdzić taki profil. W przypadku konta testowego trzeba się znów skontaktować drogą mailową z obsługą klienta prosząc o potwierdzenie profilu zaufanego dla konta testowego.

6) Następnym krokiem jest kolejny wniosek do obsługi EPUAP-u. Tym razem dokument ma ustaloną strukturę. Wzór dokumentu dodałem jako załącznik. W dokumencie dodałem komentarze wyjaśniające co oznaczają poszczególne pola. Jako załącznik do wniosku trzeba wysłać swój certyfikat testowy ponieważ musi on zostać dodany do modułu Dostawca Tożsamości jako uprawniony do używania SSO.EPAUP_wniosek_uprawnienia_SSO.docx

Opisana procedura jest bardzo złożona i niestety zajmuje bardzo dużo czasu, od kilku tygodni nawet do kilku miesięcy. Obsługa klienta w EPUAP nie odpisuje na maile i część zgłoszeń przepada. Z doświadczenia wiem, że najskuteczniejszą formą jest wysyłanie zgłoszenia dotyczącego jednego tematu np. wydanie certyfikatu testowego, a dopiero w kolejnym zgłoszeniu prośba o nadanie uprawnień. Dodatkowo polecam 2-3 dni po wysłaniu zgłoszenia upomnieć się o jego rozwiązanie. Bez upominania się zgłoszenie może nigdy nie być rozwiązane.

PS. Jeśli cokolwiek nie jest jasne to proszę pytać

Pozdrawiam

@Kuba: dzieki za rozpiske, bardzo pomocna! - grzesiek00 2017-11-29 13:03

Pozostało 580 znaków

2017-11-27 11:04
0

Dzień dobry.
Ja mam pytanie/uwagi odnośnie punkt nr 4.
W dokumentacji PZ (Punkt 3)
http://mc.bip.gov.pl/departam[...]emow-z-profilem-zaufanym.html
jest informacja, że

Uwaga
Po otrzymaniu certyfikatu podmiot nie wgrywa go samodzielnie do konsoli DRACO tak, jak
miało to miejsce do czasu wydzielenia Profilu Zaufanego.
Po otrzymaniu certyfikatu, podmiot przekazuje drogą mailową zgłoszenie do Centralnego
Ośrodka Informatyki na adres mailowy: [email protected].

Tak więc, muszę dodawać własny system czy nie?
Wydaje mi się, że w konsoli hetman dodajemy aplikacje, które będą korzystać z EPUAP a nie tylko z PZ/DT?
Czy jednak się mylę?

Pozdrawiam

Pozostało 580 znaków

2017-11-27 11:16
0

Witam,

zgadza się. Obecnie architektura EPUAP-u to 3 podstawowe elementy: PZ, DT oraz Web-services. PZ i DT to oddzielne aplikacje, które nie posiadają panelu administratora dostępnego publicznie. Osoba chcąca się integrować z tymi modułami musi prosić o uprawnienia administratorów przez pomoc techniczną (drogą mailową). Pomoc techniczna dokonuje wgrania certyfikatu i nadaje mu odpowiednie uprawnienia, zgodnie z wnioskiem, którego wzór załączyłem. Moduł numer 3 czyli: web-service np. ws-skrytka, ws-pull, ws-doreczyciel itp są kontrolowane przez konsolę Draco i wgrania certyfikatu można dokonać samodzielnie. Wniosek o wgranie certyfikatu do DT i PZ zawiera pola gdzie trzeba wpisać identyfikator systemu (możliwe, że jest to jakaś pozostałość po starej architekturze). Chcąc uniknąć późniejszej niespodzianki warto stworzyć sobie system w Draco i wgrać certyfikat. Dokumentacja EPUAP-u nie określa nigdzie wprost jak dokładnie wszystko działa, część informacji nie jest już aktualna. Integracje, które wykonywałem wymagały dostępów zarówno do PZ, DT jak i do web-services, nie podejmowałem prób usunięcia systemu z Draco.

Pozdrawiam

GigaKatowice napisał(a):

Dzień dobry.
Ja mam pytanie/uwagi odnośnie punkt nr 4.
W dokumentacji PZ (Punkt 3)
http://mc.bip.gov.pl/departam[...]emow-z-profilem-zaufanym.html
jest informacja, że

Uwaga
Po otrzymaniu certyfikatu podmiot nie wgrywa go samodzielnie do konsoli DRACO tak, jak
miało to miejsce do czasu wydzielenia Profilu Zaufanego.
Po otrzymaniu certyfikatu, podmiot przekazuje drogą mailową zgłoszenie do Centralnego
Ośrodka Informatyki na adres mailowy: [email protected].

Tak więc, muszę dodawać własny system czy nie?
Wydaje mi się, że w konsoli hetman dodajemy aplikacje, które będą korzystać z EPUAP a nie tylko z PZ/DT?
Czy jednak się mylę?

Pozdrawiam

Pozostało 580 znaków

2017-12-06 10:57
NieNadzianyPolityk
1

@kub3l: podaj numer konta / paypal / whatever - należy Ci się dobre piwo za to!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0