Tehniskais Atbalsts
Soli pa solim — no reģistrācijas līdz pirmajam e-pastam
🚀 Darba sākšana
1. Kā iegādāties licenci
Dodieties uz Konts → 📜 Licences.
Izvēlieties licenču skaitu un norēķinu periodu (mēneša vai gada).
Noklikšķiniet Pirkt Licences un veiciet maksājumu.
Licences tiek aktivizētas nekavējoties pēc veiksmīga maksājuma.
2. Kā pievienot savu domēnu
Dodieties uz Mans Konts → 🌐 Domēni.
Noklikšķiniet + Pievienot Domēnu un ievadiet savu domēna vārdu.
Nospiediet Verificēt. Pārbaude notiek automātiski dažu minūšu laikā.
Sistēma parādīs DNS ierakstus — pievienojiet tos sava domēna DNS pārvaldniekā.
2a. Vai arī nopērkat domēnu sadaļā 🌐 + Pirkt domēnu — atrodiet savu domēnu ar meklētāju un veiciet pirkumu.
3. Kā izveidot e-pasta kontu
Dodieties uz Mans Konts → 📧 E-pasta Konti.
Noklikšķiniet + Pievienot E-pasta Kontu.
Izvēlieties domēnu, ievadiet lietotājvārdu un drošu paroli (min. 12 simboli).
E-pasta konts ir gatavs lietošanai uzreiz pēc izveides.
📬 E-pasta Klientu Iestatīšana
Mozilla Thunderbird
Atveriet Thunderbird → Konts → Pievienot e-pasta kontu.
Ievadiet savu vārdu, e-pastu un paroli. Thunderbird parasti atrod iestatījumus automātiski.
Roundcube Webmail
Lietojiet e-pastu tieši pārlūkprogrammā — nekādas instalācijas nav nepieciešamas.
Atvērt Webmail →Padziļinātā pamācība
Turpmākā sadaļa paredzēta mājaslapu izstrādātājiem, kuri vēlas pievienot savai vietnei pogu „Pieteikties ar ProMail”.
✅ Ja lietojat ProMail e-pastam — viss nepieciešamais ir aprakstīts augstāk. Šo sadaļu varat izlaist.
🛠️ Ja veidojat mājaslapu — tālāk atradīsiet konfigurāciju, koda piemērus un biežākās kļūdas.
🔐 Pieteikšanās ar ProMail savā mājaslapā
Ļaujiet apmeklētājiem pieteikties jūsu mājaslapā ar ProMail kontu — bez vēl vienas paroles. ProMail parūpējas par parolēm, piekļuves atslēgām un pirksta nospieduma pārbaudi; jūsu vietne saņem apstiprinātu identitāti.
ProMail izmanto standarta OpenID Connect protokolu. Ja jūsu sistēmai ir OIDC bibliotēka, integrācija aizņem apmēram 10 minūtes — kriptogrāfija jums nav jāraksta.
⚙️ Kā tas darbojas
Lietotājs tiek nosūtīts uz ProMail
Viņš nospiež jūsu pogu un tiek pāradresēts uz promail.lv.
ProMail viņu identificē
Ar piekļuves atslēgu, pirksta nospiedumu vai paroli. Jūsu vietne to neredz.
Lietotājs atgriežas ar kodu
Jūsu serveris apmaina šo kodu pret identitātes marķieri — fonā, lietotājam neredzami.
🔑 Kā saņemt piekļuves datus
Dodieties uz Konts → 🔑 Lietotnes un nospiediet
➕ Pievienot lietotni.
Ievadiet lietotnes nosaukumu un atgriešanās adresi (redirect URI).
Katra lietotne izmanto vienu licences vietu. Tā pati licence vienlaikus var apkalpot domēnu un e-pasta kontu — tās neatņem viena otrai vietu.
📋 Konfigurācija
💡 Lielākajai daļai bibliotēku pietiek ar Discovery URL — visu pārējo tās nolasa automātiski, ieskaitot parakstu atslēgas.
⚡ Ātrais sākums ar bibliotēku
Ieteicamais veids. Norādiet savai OIDC bibliotēkai Discovery URL.
WordPress
Instalējiet spraudni OpenID Connect Generic Client, tad:
Client ID : jūsu client id Client Secret : jūsu client secret OpenID Scope : openid email profile Login Endpoint : https://promail.lv/oidc/authorize Userinfo : https://promail.lv/oidc/userinfo Token Validation: https://promail.lv/oidc/token Identity Key : sub
Node.js
Pakotne openid-client:
const promail = await Issuer.discover(
'https://promail.lv'
);
const client = new promail.Client({
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
redirect_uris: [REDIRECT_URI],
response_types: ['code'],
});
Laravel / PHP
Pakotne jumbojett/openid-connect-php:
$oidc = new OpenIDConnectClient(
'https://promail.lv',
CLIENT_ID,
CLIENT_SECRET
);
$oidc->addScope(['openid','email','profile']);
$oidc->setCodeChallengeMethod('S256');
$oidc->authenticate();
$sub = $oidc->requestUserInfo('sub');
Python
Bibliotēka Authlib:
oauth.register(
name='promail',
server_metadata_url=
'https://promail.lv/.well-known/'
'openid-configuration',
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
client_kwargs={
'scope': 'openid email profile',
'code_challenge_method': 'S256',
},
)
🛠️ Tīrs PHP, bez bibliotēkas
Pilnībā strādājošs piemērs. Divi faili: viens sāk procesu, otrs apstrādā atgriešanos.
1. promail-login.php — poga ved šurp
<?php
session_start();
define('ISSUER', 'https://promail.lv');
define('CLIENT_ID', 'jusu_client_id');
define('CLIENT_SECRET', 'jusu_client_secret');
define('REDIRECT_URI', 'https://jusuvietne.lv/promail-callback');
function b64url($b) {
return rtrim(strtr(base64_encode($b), '+/', '-_'), '=');
}
// PKCE. Verifier paliek uz jusu servera; URL nonak tikai ta hash.
// Tapec nozagts kods bez ta nav izmantojams.
$verifier = b64url(random_bytes(32));
$_SESSION['pm_verifier'] = $verifier;
$_SESSION['pm_state'] = $state = b64url(random_bytes(16));
$_SESSION['pm_nonce'] = $nonce = b64url(random_bytes(16));
header('Location: ' . ISSUER . '/oidc/authorize?' . http_build_query([
'client_id' => CLIENT_ID,
'redirect_uri' => REDIRECT_URI,
'response_type' => 'code',
'scope' => 'openid email profile',
'state' => $state,
'nonce' => $nonce,
'code_challenge' => b64url(hash('sha256', $verifier, true)),
'code_challenge_method' => 'S256',
]));
2. promail-callback.php — redirect URI norada šurp
<?php
session_start();
// ... tie pasi define() kas augstak ...
if (isset($_GET['error'])) {
exit('Pieteiksanas neizdevas: ' . htmlspecialchars($_GET['error']));
}
// state jasakrit, citadi tas ir viltots pieprasijums no citas vietnes
if (!hash_equals($_SESSION['pm_state'] ?? '', $_GET['state'] ?? '')) {
exit('Drosibas parbaude neizdevas');
}
// Koda apmaina. Serveris pret serveri caur TLS - parluks nav iesaistits,
// tapec seit ir drosi sutit client secret.
$ch = curl_init(ISSUER . '/oidc/token');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => http_build_query([
'grant_type' => 'authorization_code',
'code' => $_GET['code'],
'redirect_uri' => REDIRECT_URI,
'code_verifier' => $_SESSION['pm_verifier'],
'client_id' => CLIENT_ID,
'client_secret' => CLIENT_SECRET,
]),
]);
$tokens = json_decode(curl_exec($ch), true);
curl_close($ch);
if (empty($tokens['id_token'])) { exit('Marķiera apmaina neizdevas'); }
$claims = json_decode(base64_decode(strtr(
explode('.', $tokens['id_token'])[1], '-_', '+/')), true);
if ($claims['iss'] !== ISSUER) { exit('Nepareizs izdevejs'); }
if ($claims['aud'] !== CLIENT_ID) { exit('Nepareiza auditorija'); }
if ($claims['exp'] < time()) { exit('Marķieris noildzis'); }
if ($claims['nonce'] !== $_SESSION['pm_nonce']) { exit('Nonce nesakrit'); }
unset($_SESSION['pm_verifier'], $_SESSION['pm_state'], $_SESSION['pm_nonce']);
// $claims['sub'] - pastavigs lietotaja ID. SAGLABAJIET SO.
// $claims['email'] - var mainities. Nelietojiet ka atslegu.
// $claims['name']
$user = atrastLietotajuPecSub($claims['sub']);
if (!$user) {
// Pirma reize. Sasaistiet ar esosu kontu vai izveidojiet jaunu.
}
⚠️ Biežākās kļūdas
E-pasts tiek izmantots kā konta atslēga
Lietojiet sub. Tas nekad nemainās. E-pasti mainās, un atkārtoti izmantota adrese nodotu kontu nākamajam īpašniekam.
Redirect URI nesakrīt precīzi
ProMail salīdzina to burtu pa burtam. https://vietne.lv/cb un https://vietne.lv/cb/ ir divas dažādas adreses. Šī ir visbiežākā kļūda.
Tiek uzticēts marķiera paša alg laukam
Vienmēr pieprasiet RS256 no savas konfigurācijas. Marķieris, kas apgalvo alg: none, ir jānoraida.
Tiek izlaista state pārbaude
Bez tās uzbrucējs var pabeigt pieteikšanos upura pārlūkā un piesaistīt savu ProMail kontu upura sesijai.
Client Secret nonāk JavaScript kodā
Tas drīkst atrasties tikai uz servera. Viss, kas ir pārlūka kodā, ir publisks.
PKCE netiek izmantots
ProMail to pieprasa. Pieprasījumi bez code_challenge tiek noraidīti.
🎨 Poga
Lietojiet vienādu tekstu un izskatu, lai lietotāji pogu atpazītu visās vietnēs.
<a href="/promail-login" class="promail-btn">
<img src="https://promail.lv/img/promail-logo.webp" alt="" width="20" height="20">
<span>Pieteikties ar ProMail</span>
</a>
<style>
.promail-btn{display:inline-flex;align-items:center;justify-content:center;
gap:9px;padding:11px 18px;border:1px solid #d1d5db;border-radius:8px;
background:#fff;color:#111827;font:600 14px system-ui,sans-serif;
text-decoration:none}
.promail-btn:hover{background:#f9fafb;border-color:#9ca3af}
</style>
🧪 Testēšana
Atsevišķas testa vides nav. Reģistrējiet otru lietotni ar http://localhost atgriešanās adresi — localhost ir vienīgā adrese, kas atļauta bez https — un pārbaudiet integrāciju pirms palaišanas reālajā vietnē.