Przejdź do treści

OpenApp Login

OA Login umożliwia bezhasłowe logowanie do sklepów online.

Wykorzystuje ono autentykację biometryczną urządzeń mobilnych, aby dać użytkownikom płynne doświadczenie logowania bez konieczności wprowadzania jakichkolwiek danych.

W połączeniu z OA Checkout umożliwia całkowiecie płynne doświadczenie zakupowe - bez ręcznego wprowadzania jakichkolwiek danych w procesie zakupowym.

OA Login jest zaprojektowany z myślą o bezpieczeństwie i zapewnieniu użytkownikom pełnej kontroli nad procesem. Przed pierwszym logowaniem do sklepu, użytkownik widzi na swoim telefonie nazwę sklepu do którego się loguje i klika OK. W ten sposób, nawet w przypadku manipulacji kodem QR przez hackera na stronie sklepu, żadne dane użytkownika nie zostaną przesłane do sklepu innego niż oczekuje tego użytkownik.

Pierwsze logowanie w sklepie

sequenceDiagram
  autonumber
  participant Merchant
  participant User
  participant OpenApp app
  participant OA API

  activate User
  User->>+Merchant: zaloguj
  Merchant ->>-User: pokaż OA Widget
  User->>+OpenApp app: skan kodu QR lub tap w Widget
  OpenApp app->>+OA API: uzyskaj dane sklepu 
  OA API->>-OpenApp app: dane sklepu
  OpenApp app->>-User: pokaż dane sklepu
  User->>+OpenApp app: OK
  OpenApp app->>-User: pokaż ekran biometrii
  User->>+OpenApp app: skan twarzy / palca 
  OpenApp app->>+OA API: OK
  OA API->>+Merchant: dane użytkownika
  Merchant->>OA API: OK
  OA API->>-OpenApp app: OK
  OpenApp app->>User: OK
  OpenApp app->>OpenApp app: zamknij 
  deactivate OpenApp app
  Merchant->>User: Witamy w sklepie...
  deactivate User

Kolejne logowanie w sklepie

Przy każdym kolejnym logowaniu do sklepu użytkownik nie musi już dodatkowo potwierdzać logowania - wystarczy skan kodu QR lub tapnięcie widgetu OA.

sequenceDiagram
  autonumber
  participant Merchant
  participant User
  participant OpenApp app
  participant OA API

  activate User
  User->>+Merchant: zaloguj
  Merchant ->>-User: pokaż OA Widget
  User->>+OpenApp app: skan kodu QR lub tap w Widget
  OpenApp app->>+OA API: uzyskaj dane sklepu
  OA API->>-OpenApp app: dane sklepu
  OpenApp app->>-User: pokaż ekran biometrii
  User->>+OpenApp app: skan twarzy / palca
  OpenApp app->>+OA API: OK
  OA API->>+Merchant: dane użytkownika
  Merchant->>OA API: OK
  OA API->>-OpenApp app: OK
  OpenApp app->>User: OK
  OpenApp app->>OpenApp app: zamknij
  deactivate OpenApp app
  Merchant->>User: Witamy w sklepie...
  deactivate User

Dane wysyłane do sklepu

Sklep otrzymuje zawsze tylko anonimowy adres email użytkownika.

Adres email jest generowany dla unikalnego połączenia użytkownika i danego sklepu. Adres email jest taki sam przy każdym logowaniu i zakupie użytkownika w sklepie, co pozwala na trackowanie zamówień i aktywności klienta w sklepie.

Bezpieczeństwo sesji

Zabezpieczenie przed wielokrotnym skanowaniem tego samego kodu QR leży po stronie sklepu: OA silnie rekomenduje, aby sklep pozwalał jedynie na działnie usługi OA Login w trybie od "sesji niezautentykowanej" do "sesji zautentykowanej". Odpowiedzialnością sklepu jest zapewnienie, aby ponowny skan tego samego kodu QR (lub tapięcia w widget) nie umożliwiał przełączenie zautentykowanej sesji do innej tożsamości (session stealing). Zautentykowana sesja nie powinna pokazywać wogóle widgetu OA Login.

Request

Po potwierdzeniu przez użytkownika, że chce się zalgować w danym sklepie, OA prześle dane identyfikujące użytkownika oraz token sesji, co pozwoli na powiązanie tożsamości z aktywną sesją. To jest request HTTP POST z serwera OpenApp do endpointu skonfigurowanego w panelu OA sklepu, zawierający tożsamość i token w body wiadomości:

POST <identity-url>

Jeśli skonfigurowałeś wartość https://shop.example.com/api/openapp/identity a token to 56465affa646as4fa6f64fd5a, request wysłany przez OpenApp będzie następujący:

POST https://shop.example.com/api/openapp/identity

User identity request
1
2
3
4
{
  "email": "user-anonymous-12345@o-app.pl",
  "token": "56465affa646as4fa6f64fd5a"
}
User identity request v1
{
    "description": "The identity of the user",
    "additionalProperties": false,
    "type": "object",
    "properties": {
        "email": {
            "description": "The unique email address of the user.",
            "type": "string",
            "title": "email"
        },
        "token": {
            "description": "The session token.",
            "type": "string",
            "title": "token"
        }
    },
    "required": [
        "email",
        "token"
    ],
    "$schema": "http://json-schema.org/draft-07/schema#"
}

Odpowiedź

W odpowiedzi, sklep powinien wysłać odpowiedź HTTP ze kodem statusu 200. Reszta danych będzie zignorowana.