我在一家公司的一个项目中,该公司有多个身份提供者,所有身份提供者都使用 Open ID Connect 或 SAML。有人建议将令牌发送到服务器(不作为授权标头) 进行反序列化,并让它以纯文本形式返回一组标准声明。
原因是,如果声明确实发生了变化,服务器将映射正确的类型和值,因此客户端不会出现错误。此外,如果索赔存在问题,那么只有一个失败来源。
我不同意这一点,但不确定最好的论点。我想我会进行事实核查,看看这是一种常见的做法还是应该避免的事情。有人可以告诉我你应该或不应该这样做的理由吗?
这可能有几个动机。首先,将令牌保留在浏览器之外并使用后端作为前端通常被认为是更安全的模型,其中攻击向量更少。在这种情况下,SPA 可以将仅 HTTP cookie 发送到返回 ID 令牌声明的端点。
在其他情况下,SPA 可以使用访问令牌调用 API。然后 API 可以将权限返回给 SPA,例如关于向用户显示哪些 UI 元素的规则。访问令牌旨在由 API 读取,客户端不应直接读取它们。
SPA 通常只需要执行一次这些操作,因此不需要任何服务器端缓存。您也许应该用更多关于端到端流程的信息来更新您的问题。例如,您在谈论哪个令牌和声明,后端调用的顺序是什么?