Dla firm

Dokumentacja

elogowanie.pl jest zwyklym dostawca OpenID Connect. Jesli Twoja biblioteka umie Discovery, integracja to wpisanie jednego adresu.

Punkty koncowe

issuer:        https://elogowanie.pl
discovery:     https://elogowanie.pl/.well-known/openid-configuration
authorization: https://elogowanie.pl/oauth2/auth
token:         https://elogowanie.pl/oauth2/token
userinfo:      https://elogowanie.pl/oauth2/userinfo
jwks:          https://elogowanie.pl/oauth2/jwks
revocation:    https://elogowanie.pl/oauth2/revoke
introspection: https://elogowanie.pl/oauth2/introspect

Obslugiwany przeplyw: authorization code. PKCE wymagane dla klientow publicznych, zalecane dla wszystkich. Response type: code.

Refresh token: dopisz zakres offline_access oraz parametr prompt=consent. Bez prompt=consent specyfikacja OIDC kaze zignorowac offline_access i dostaniesz sam access token na godzine. Refresh tokeny wydajemy tylko klientom serwerowym.

Zakresy

Zakresy i zwracane claimy
ZakresCo dostajeszUwagi
openidsubWymagany. Pseudonim rozny w kazdej aplikacji.
profilename, given_name, family_nameWraz z poziomem potwierdzenia.
emailemail, email_verifiedZawsze alias @elogowanie.pl.
ageage, age_over_18Bez daty urodzenia.
birthdatebirthdateDane wrazliwe.
phonephone_numberDane wrazliwe.
addressaddressWymaga zweryfikowanej firmy.
documentdocument_verified, document_typeWymaga zweryfikowanej firmy. Numeru dokumentu nie przekazujemy.
peselpeselWymaga zweryfikowanej firmy i podstawy prawnej.

Poziom potwierdzenia danych

Kazda odpowiedz z /oauth2/userinfo zawiera elg_verification: mape claim → poziom.

{
  "sub": "hK3n9...",
  "name": "Anna Kowalska",
  "given_name": "Anna",
  "family_name": "Kowalska",
  "email": "a7k3m9x2q4pv@elogowanie.pl",
  "email_verified": true,
  "age": 34,
  "age_over_18": true,
  "elg_verification": {
    "given_name": "DOCUMENT",
    "family_name": "DOCUMENT",
    "age": "DOCUMENT",
    "email": "OTP"
  }
}

SELF - uzytkownik wpisal sam · OTP - potwierdzone kodem · DOCUMENT - zgodne ze zweryfikowanym dokumentem tozsamosci · AUTHORITY - potwierdzone przez rejestr. Jesli Twoj proces wymaga pewnosci, sprawdzaj to pole, nie sama obecnosc claimu.

Adres e-mail

Nigdy nie dostajesz prawdziwego adresu uzytkownika. Dostajesz alias w domenie elogowanie.pl, ktory dziala jak normalna skrzynka: piszesz na niego, poczta trafia do uzytkownika. Nie musisz nic zmieniac w swoim systemie mailingowym.

  • Domyslnie kazda aplikacja dostaje inny alias tej samej osoby.

  • Uzytkownik moze wylaczyc alias - wtedy Twoja poczta przestaje byc przekazywana. Stan sprawdzisz w GET /api/v1/apps/{id}/authorizations (email_active).

  • Cofniecie zgody wylacza alias automatycznie.

  • Nie probuj wysylac z adresu @elogowanie.pl - domena ma SPF, DKIM i DMARC.

REST API firmy

Uwierzytelnianie: Authorization: Bearer elg_live_... (klucz z panelu firmy).

GET    /api/v1/me
GET    /api/v1/scopes
GET    /api/v1/apps
POST   /api/v1/apps                      { name, redirect_uris[], scopes[] }
GET    /api/v1/apps/{id}
PATCH  /api/v1/apps/{id}
POST   /api/v1/apps/{id}/rotate-secret
GET    /api/v1/apps/{id}/authorizations

Endpoint authorizations zwraca wylacznie pseudonimy i aliasy - zadnych danych osobowych.

Serwer MCP

To samo API wystawiamy jako serwer MCP, zeby asystent AI mogl zalozyc integracje bez klikania w panelu.

{
  "mcpServers": {
    "elogowanie": {
      "type": "http",
      "url": "https://mcp.elogowanie.pl/mcp",
      "headers": { "Authorization": "Bearer elg_live_..." }
    }
  }
}

Narzedzia:

lista_aplikacji utworz_aplikacje szczegoly_aplikacji zaktualizuj_aplikacje wymien_sekret lista_zakresow uzytkownicy_aplikacji przyklad_integracji info_o_firmie

Przyklad - Node.js

// wymiana kodu na tokeny
const res = await fetch('https://elogowanie.pl/oauth2/token', {
  method: 'POST',
  headers: {
    'content-type': 'application/x-www-form-urlencoded',
    authorization: 'Basic ' + Buffer.from(`${clientId}:${clientSecret}`).toString('base64'),
  },
  body: new URLSearchParams({
    grant_type: 'authorization_code',
    code,
    redirect_uri: 'https://twojsklep.pl/callback',
    code_verifier: verifier,
  }),
})
const { access_token, id_token } = await res.json()

// dane uzytkownika
const me = await fetch('https://elogowanie.pl/oauth2/userinfo', {
  headers: { authorization: `Bearer ${access_token}` },
}).then((r) => r.json())