Çekirdekte OAuth2/OpenID bağlayın
OAuth2 üzerinden OIDC, kullanıcının/istemcinin kim olduğunu kanıtlamanın ve kısa ömürlü API erişimi sağlamanın standart bir yoludur. Platformun özünde, merkezi bir yetenek haline gelir: müşteriler, operatörler ve hizmetler için tek oturum açma; asgari ayrıcalıklar; Ölçülebilir risk; Bölgesel ve lisanslama yönetmeliklerine uygunluk.
1) Hedefler ve ilkeler
"Deploy vs enable" ayrımı: Kodu ayrı ayrı açın, bayraklar/ilkelerle erişimi etkinleştirin.
Kısa ömürlü belirteçler + güvenli güncelleme: sızıntılardan kaynaklanan hasarı azaltın.
Çok kiracılı/bölge: tüm eserler 'kiracı/bölge/lisans'olarak etiketlenir.
Belirteçlerin üstündeki politikalar: çözümler PDP (RBAC/ABAC), PEP on gateway/services tarafından yapılır.
Bağlantı koruması: TLS1. 2 +, mTLS/DPoP mümkünse, sıkı CORS/CSRF.
Gözlemlenebilirlik ve denetim: akışa, müşteriye, bölgeye göre görünürlük.
2) Akışlar ve ne zaman uygulanacağı
Yetkilendirme Kodu + PKCE (SPA/Mobil/Web) - kullanıcı girişleri için varsayılan.
Cihaz Yetkilendirmesi (konsollar/TV/CLI) - tarayıcı olmadığında.
İstemci Kimlik Bilgileri (makineden makineye) - kullanıcı olmadan servis entegrasyonları.
Token Exchange (RFC 8693, OBO) - hizmet kullanıcı adına hareket eder.
CIBA/Arka kanal (isteğe bağlı) - yeniden yönlendirmeden kimlik doğrulaması yapın.
- PAR (Pushed Authorization Requests) - yetkilendirme parametreleri güvenli bir sunucu kanalı üzerinden iletilir.
- JWT Güvenli Yetkilendirme - İstek parametreleri imzalanmış/şifrelenmiştir.
- JARM - korumalı yetkilendirme yanıtı (JWT), sahteciliğe karşı dayanıklıdır.
- RAR (Zengin Yetkilendirme İstekleri) - zengin erişim hakları istekleri (ayrıntılı izinler).
3) Belirteçler ve pullar
Türleri:- ID Token (OIDC) - kim girdi (yalnızca istemciye/öne göster).
- Access Token (AT) - eylem hakkı (kısa ömür).
- Refresh Token (RT) - AT güncellemeleri; Yalnızca güvenilir bir ortamda saklanır.
- AT: 5-15 dakika (web/mobil), 2-5 dakika (servis-servis).
- RT: 7-30 дней (web/mobil) с rotasyon + yeniden kullanım algılama.
- ID: ≤ 5 dk.
json
{
"iss":"https://auth. core",
"sub":"user_42",
"aud":["wallet","catalog"],
"exp":1730388600,"iat":1730388000,
"tenant":"brand_eu","region":"EE","licence":"EE-A1",
"scp":["wallet:read","bets:place"], // scopes
"sid ": "sess _ abcd, ""amr": [" pwd,"" webauthn"] ,//login methods
"act":{"sub":"svc. catalog" }//if OBO
}
İmzalama: ES256/EdDSA, açık anahtarlar - JWKS'de'çocuk've rotasyon.
4) Oturum taslağı ve çıkış
Sunucu tarafı oturum для web (çerez 'SameSite = Lax/Strict', 'HttpOnly', 'Secure').
Arka Kanal Çıkış + Ön Kanal Çıkış (OIDC) - tüm istemcilerin eşzamanlı sonlandırılması.
Step-Up MFA: hassas eylemlerle - tekrarlanan kontrol ('acr' artar).
İptal ve İç Gözlem: Olayla RT/AT'yi derhal devre dışı bırakma.
5) Müşteri güvenliği
Web/SPA'lar: Yetkilendirme Kodu + PKCE, örtülü değil; Sıkı CORS/İçerik-Güvenlik-Politikası.
Mobil: sistem tarayıcısı (AppAuth), bütünlük kontrolü (App Attestation/DeviceCheck), güvenli RT depolama.
Masaüstü/CLI/TV: Cihaz Akışı; RT'yi işletim sistemi gizli mağazalarında saklayın.
AT'yi cihaza/bağlantıya bağlamak için DPoP veya mTLS'ye bağlı belirteçler.
6) Servisten servise
mTLS + kısa Servis JWT (aud-scoped), KMS/HSM ile STS verir.
İş yüklerinin kimlikleri: SPIFFE/SPIRE.
Dar kapsamlı politika: Bunun yerine belirli kitle ve kapsamlar. "
7) Kapsam-kayıt ve onay
Adlandırma: 'kaynak: eylem' - 'cüzdan: okuma', 'cüzdan: transfer', 'bahisler: yer', 'kyc: durum. Oku '.
Kapsamların görünürlüğünü ve hassasiyetini yapılandırın.
Onay ekranı RAR/Scopes'tan monte edilir; Bir onay geçmişi tutun ve geri bildirime izin verin.
json
{
"type":"wallet. transfer",
"actions":["create"],
"locations":["https://api. core/wallet"],
"datatypes":["payment"],
"resources":[{"wallet_id":"w_123","currency":"EUR","amount_max":1000}]
}
8) Yetkilendirme Entegrasyonu (PDP/PEP)
Ağ Geçidi API'sindeki PEP, AT/DPoP/mTLS'yi doğrular, bağlamı zenginleştirir (IP/ASN/bölge/kiracı), PDP'ye bir istekte bulunur.
PDP (OPA/cedar) RBAC/ABAC/ReBAC politikalarını uygular ve açıklama ve TTL ile 'ALLOW/DENY' döndürür.
Etkinliğe göre engelli PEP (TTL 30-120 s) çözüm önbelleği (rol/kural değişikliği).
9) Çok kiracı ve bölgeler
Tüm belirteçler ve oturumlar 'kiracı/bölge/lisans'olarak etiketlenmiştir; PDP, kaynak uyumluluğunu doğrular.
JWKS/tuşları ve geri çağırma listelerini bölgelere göre ayırın; Çapraz bölge - güvenilir ağ geçitleri aracılığıyla.
Veri ikameti sınırlamaları: İç gözlem/iptal, menşe bölgesinde gerçekleştirilir.
10) Protokol amplifikasyonları
PAR + JAR + JARM - Yetkilendirme parametrelerini ve yanıtlarını koruyun.
Nonce/State/PKCE - tüm kamu müşterileri için.
İtilmiş Cihaz Yetkilendirmesi (yüksek risk altında).
JWT Access Belirteçleri, minimum damgalarla + iç gözlem yoluyla dış entegrasyonlar için opak seçenek.
FAPI benzeri uygulamalar: katı imza algoritmaları, TLS/redirect_uri/PKCE gereksinimleri.
11) Hatalar ve iade politikası
Yanıtları standartlaştırın:json
{ "error":"invalid_grant", "error_description":"refresh token reused", "error_code":"RT_REUSE" }
Критичные коды: 'invalid _ request', 'invalid _ client', 'invalid _ grant', 'invalid _ scope', 'authorized _ client', 'access _ denied', 'temporally _ available'.
Hassas uç noktalar için hız sınırı ('/token ','/introspect','/revoke '), üstel geri alma.
12) Gözlemlenebilirlik ve denetim
Metrikler:- 'auth _ code _ success _ rate', 'pkce _ missing _ rate', 'mfa _ challenge/fail _ rate',
- 'token _ releasion _ p95 _ ms', 'jwks _ skew _ ms', 'invalid _ token _ rate', 'rt _ reuse _ detected',
- по API'si: 'authz _ p95 _ ms', 'deny _ rate {reason}', 'dpop _ mismatch _ rate', 'mtls _ fail _ rate'.
Логи/трейсы: 'client _ id', 'grant _ type', 'kid', 'acr/amr', 'tenant/region', 'decision', 'policy _ version', 'aud', 'scp', 'sid', 'trace _ id'.
Denetim (değiştirilemez): belirteçlerin verilmesi, hakların arttırılması, onayların geri çekilmesi, anahtar rotasyonu.
13) Anahtar yönetimi ve rotasyon
JWT imzası: KMS/HSM,'çocuk'ile JWKS yayını.
Çift anahtarlı dönem: IdP yeni işaretler, gözden geçirenler değiştirmeden önce eski + yeni kabul eder.
Düzenli rotasyon ve acil iptal; "Çocuk" tüketiminin izlenmesi.
14) Playbook'lar (runbook'lar)
1. İmza anahtarı uzlaşma
Derhal'çocuk'u iptal edin, yeni, zorla devre dışı bırakılmış bir RT/oturum, denetim raporu yayınlayın.
2. Kütle 'invalid _ token'/büyüme 401
Saat yanlış hizalamasını, süresi dolmuş AT, kırık JWKS önbelleğini kontrol edin; Geçici olarak'clock _ skew 'toleransını artırın.
3. RT yeniden kullanımı
Oturumu ('sid') engelleyin, kullanıcıyı bilgilendirin, yeni bir giriş için bir adım talep edin, araştırın.
4. IdP düşüşü
"Salt okunur yetkilendirme" modunu etkinleştirin: Etkin AT'leri TTL'ye kadar tutun, yeni girişleri kısıtlayın, iç gözlem önbelleğini ölçeklendirin.
5. '/token 'üzerine saldırı
Hız sınırı/bot filtrelerini güçlendirin, hassas istemciler için mTLS/DPoP'yi etkinleştirin, soğuk RT'leri ayrı bir segmente taşıyın.
15) Test etme
Sözleşme: OIDC keşfi, JWKS, OpenID sağlayıcı yapılandırması.
Güvenlik: PKCE/nonce/state gereklidir; Negatif kümeler ('redirect _ uri', RT'yi yeniden kullanma).
Birlikte çalışabilirlik: istemciler (web/mobil/CLI), farklı zaman dilimleri/yerel ayarlar.
Kaos: PAR/JARM hatası, JWKS gecikmesi, anında'çocuk 'döndürüldü.
E2E: adım adım MFA, OBO (belirteç değişimi), çıkış (ön/arka kanal), iptal/döndürme.
16) Yapılandırma örnekleri
OIDC/Yetkilendirme Sunucusu (YAML parçası):yaml issuer: https://auth. core jwks:
rotation_days: 30 alg: ES256 tokens:
access_ttl: 10m refresh_ttl: 14d id_ttl: 5m policies:
require_pkce: true require_par: true require_jarm: true dpop_enabled: true mfa_step_up:
actions: ["wallet:transfer","payout:initiate"]
tenancy:
include_claims: ["tenant","region","licence"]
jwks_per_region: true
Kapsam kaydı:
yaml scopes:
wallet: read: {desc: "Reading balance"}
wallet: transfer: {desc: "Transfer of funds," sensitive: true, step_up: true}
bets: place: {desc: "Betting"}
kyc:status. read: {desc: "KYC status"}
roles:
player: { allow: [bets:place] }
support: { allow: [wallet:read, kyc:status. read] }
finance: { allow: [wallet:read, wallet:transfer] }
17) Satış öncesi kontrol listesi
- PKCE/nonce/state etkin; PAR/JAR/JARM aktiftir.
- AT/RT/TTL Kimlik seti; RT döndürme + yeniden kullanım algılama etkinleştirildi.
- Hassas istemciler/işlemler için DPoP veya mTLS bağlama.
- JWKS c'çocuk '; Otomatik rotasyon ve anahtar tüketimi izleme.
- Rıza/RAR ve kapsam kaydı; Hassas faaliyetler için MFA'yı arttırın.
- PDP/PEP entegre, engellilik çözümleri önbellek.
- Belirteçler 'kiracı/bölge/lisans' içerir; yerleşim gözlemlenir.
- Gözlemlenebilirlik: metrikler, günlükler, izleme; 'invalid _ token', 'rt _ reuse', 'jwks _ skew' için uyarılar.
- revoke/rotate/lockdown üzerine oyun kitapları; acil çıkış düğmesi.
- Tribünlerde bir dizi E2E/chaos/interop testi yapıldı.
Sonuç
OAuth2/OIDC bir platform özelliği olarak yerleştirerek, öngörülebilir yetkilendirme akışları, yönetilen belirteçler, tek tip erişim politikaları ve ölçülebilir risk elde edersiniz. RT ile korunan kısa AT'ler, anahtar rotasyonu, PAR/JARM/DPoP, rıza ve adım atma, güvenliği varsayılan hale getiren ve ekipler ve ortaklar için hızlı ve acısız bir evrim sağlayan uygulamalardır.