GH GambleHub

內核中的OAuth2/OpenID連接

OAuth2頂部的OIDC是證明「用戶/客戶端是誰」並發布對API的短暫訪問的標準方法。在平臺的核心中,它成為中心能力:為客戶,運營商和服務提供單一輸入;最低特權;可衡量的風險;遵守區域和許可證規則。

1)目標和原則

拆分「deploy vs enable」:分別推出代碼,包括旗幟/策略訪問。
短壽命令牌+安全更新:減少泄漏損壞。
多重特南特/地區:所有文物都突出「特南特/地區/許可證」。
令牌之上的策略:解決方案使PDP (RBAC/ABAC)成為網關/服務上的PEP。
渠道保護:TLS1。2+,如果可能的話,mTLS/DPoP,嚴格的CORS/CSRF。
可觀察性和審核:按客戶、區域按流可見性。

2)線程以及何時應用

授權代碼+PKCE(SPA/Mobile/Web)是自定義登錄的默認值。
設備授權(控制臺/TV/CLI)-沒有瀏覽器時。
Client Credentials(機器到機器)-無用戶服務集成。
Token Exchange (RFC 8693, OBO)-該服務代表用戶運行。
CIBA/Back頻道(可選)是無需重新定向的推送身份驗證。

默認情況下值得啟用的擴展:
  • PAR(推送授權請求)-授權參數通過受保護的服務器通道傳輸。
  • JAR (JWT Secured Authorization)-已簽名/加密請求設置。
  • JARM是受保護的授權響應(JWT),可抵抗欺騙。
  • RAR (Rich Authorization Requests)-豐富的訪問權限請求(詳細權限)。

3)代幣和烙印

類型:
  • ID Token (OIDC)-誰登錄了(僅顯示客戶端/前端)。
  • Access Token (AT)-行動權(短壽命)。
  • Refresh Token (RT)-更新AT;僅存儲在受信任的環境中。
關於時限的建議:
  • AT:5-15分鐘(web/mobile),2-5分鐘(服務到服務)。
  • RT: 7–30 дней (web/mobile) с rotation + reuse detection.
  • ID:≤ 5分鐘。
AT最小標記(示例):
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
}

簽名:ES256/EdDSA,公共鑰匙-在JWKS中帶有「kid」和輪換。

4)會議大綱和記錄

Server-side session для web (cookie `SameSite=Lax/Strict`, `HttpOnly`, `Secure`).

Back-Channel Logout+Front-Channel Logout (OIDC)-所有客戶端的同步終止。
Step-Up MFA:在敏感活動中-重新檢查(「acr」上調)。
Revocation&Introspection:立即關閉事件的RT/AT。

5)客戶安全

Web/SPA:授權代碼+PKCE,不實現;嚴格CORS/內容-安全-政策。
移動:系統瀏覽器(AppAuth)、完整性檢查(App Attestation/DeviceCheck)、安全的RT存儲。
Desktop/CLI/TV: Device Flow;將RT存儲在OS密碼存儲中。
DPoP或mTLS-bound tokens將AT綁定到設備/連接。

6)服務與服務

mTLS+短服務JWT(aud-scoped),用KMS/HSM發出STS。
工作負載標識:SPIFFE/SPIRE。

狹義到寬泛的政策: 特定的聽眾和範圍代替。"

7)Scope註冊表和同意(同意)

命名: "資源:動作"-"wallet:read","wallet:transfer","bets:place","kyc:status。read`.

配置漏洞的可見性和靈敏度。
Consent screen是從RAR/Scopes收集的;保存同意的歷史,並允許召回。

示例RAR(錢包→翻譯):
json
{
"type":"wallet. transfer",
"actions":["create"],
"locations":["https://api. core/wallet"],
"datatypes":["payment"],
"resources":[{"wallet_id":"w_123","currency":"EUR","amount_max":1000}]
}

8)授權集成(PDP/PEP)

Gateway API上的PEP驗證AT/DPoP/mTLS,豐富上下文(IP/ASN/region/tenant),並查詢PDP。
PDP(OPA/cedar)應用RBAC/ABAC/ReBAC策略,並返回帶有解釋和TTL的「ALLOW/DENY」。
PEP(TTL 30-120 s)的解決方案緩存因事件而殘疾(角色/規則更改)。

9)多特南特和地區

所有令牌和會話均標有「tenant/region/licence」;PDP驗證資源合規性。
按地區劃分的JWKS/密鑰和召回列表;跨區域-通過可信賴的網關。
數據駐留限制:在原產地區域執行內測/重復。

10)協議增益

PAR+JAR+JARM-保護參數和授權響應。
Nonce/State/PKCE-適用於所有公共客戶。
推送設備授權(高風險)。
JWT Access Tokens具有最小的標記+opaque變體,可通過內窺鏡進行外部集成。
類似FAPI的做法:嚴格的簽名算法,TLS/redirect_uri/PKCE要求。

11)錯誤和退貨政策

標準化答案:
json
{ "error":"invalid_grant", "error_description":"refresh token reused", "error_code":"RT_REUSE" }

Критичные коды: `invalid_request`, `invalid_client`, `invalid_grant`, `invalid_scope`, `unauthorized_client`, `access_denied`, `temporarily_unavailable`.

敏感端口('/token','/introspect','/revoke')的速率限制,指數反沖。

12)可觀察性和審計

度量標準:
  • `auth_code_success_rate`, `pkce_missing_rate`, `mfa_challenge/fail_rate`,
  • `token_issuance_p95_ms`, `jwks_skew_ms`, `invalid_token_rate`, `rt_reuse_detected`,
  • по API: `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`.

審計(不可更改):代幣發行、權利升級、同意撤銷、密鑰輪換。

13)密鑰管理和輪換

JWT標題:KMS/HSM,JWKS的「kid」出版物。
雙鍵期:IdP簽名新,驗證者在切換前接受舊+新。
定期輪換和緊急恢復;「kid」消費監測。

14)花花公子(runbooks)

1.簽名密鑰的損害

立即恢復「kid」,發布新的RT/會話強制殘疾,向審計報告。

2.大眾「invalid_token」/身高 401

檢查AT過期時鐘,JWKS-kesh斷裂;暫時增加tolerance 「clock_skew」。

3.RT重復使用

阻止會話(「sid」),通知用戶,要求重新登錄,調查。

4.IdP的下降

啟用「僅讀取授權」模式:將有效的AT保持為TTL,限制新登錄,滑動內窺鏡緩存。

5.攻擊「/令牌」

強化限量/機器人過濾器,為敏感客戶啟用mTLS/DPoP,將「冷」RT帶入單獨的細分市場。

15)測試

Contract: OIDC discovery, JWKS, OpenID provider config.

安全:PKCE/nonce/state是強制性的;negative集(redirect_uri, reuse RT)。
互操作性:客戶端(web/mobile/CLI),不同的時區/本地。
混亂:PAR/JARM故障,JWKS延遲,rotated 「kid」「即時」。

E2E: step-up MFA, OBO (token exchange), logout (front/back-channel), revoke/rotate.

16)配置示例

OIDC/授權服務器(YAML片段):
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
Scope註冊表:
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)售前支票清單

  • 包括PKCE/nonce/state;PAR/JAR/JARM處於活動狀態。
  • AT/RT/ID TTL;包括RT rotation+reuse檢測。
  • 用於敏感客戶/操作的DPoP或mTLS綁定。
[] JWKS c `kid`;自動輪換和密鑰消耗監測。
  • Consent/RAR和Scoops註冊表;step-up MFA用於敏感活動。
  • PDP/PEP集成,殘障解決方案緩存。
  • 令牌包含「tenant/region/licence」;遵守居住。
  • 可觀察性:度量,邏輯,跟蹤;「invalid_token」、「rt_reuse」、「jwks_skew」上的alerta。
  • revoke/rotate/lockdown上的花花公子;緊急登錄按鈕。
  • E2E/chaos/interop測試集在展臺上通過。

結論

通過將OAuth2/OIDC嵌入為平臺能力,您可以獲得可預測的授權流,托管令牌,單一訪問策略和可衡量的風險。短的AT,受保護的RT,按鍵旋轉,PAR/JARM/DPoP,同意和步進是使默認安全成為現實的做法,並且對於團隊和合作夥伴而言,進化是快速而無痛的。

Contact

與我們聯繫

如有任何問題或支援需求,歡迎隨時聯絡我們。我們隨時樂意提供協助!

開始整合

Email 為 必填。Telegram 或 WhatsApp 為 選填

您的姓名 選填
Email 選填
主旨 選填
訊息內容 選填
Telegram 選填
@
若您填寫 Telegram,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。