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,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。