Oauth 2.0 解释Open ID connect中的脱机令牌验证与联机令牌验证?优点,局限及;权衡

Oauth 2.0 解释Open ID connect中的脱机令牌验证与联机令牌验证?优点,局限及;权衡,oauth-2.0,jwt,access-token,openid-connect,keycloak,Oauth 2.0,Jwt,Access Token,Openid Connect,Keycloak,在为现有应用程序和后端服务开发开放ID连接模型的过程中,对于ID令牌和访问令牌的脱机JSON令牌验证和联机JSON令牌验证,我感到困惑 我的开放ID提供者:keydepeat 我的问题是关于令牌验证的想法,所以我不讨论实现细节 根据OIDC(开放式ID连接) ID令牌将被颁发给请求资源的服务 一旦认证 现在,在资源服务器端是否确实需要使用开放ID提供者验证令牌(keydove)或基于公钥离线验证令牌。 如果我选择令牌验证的离线模型-我必须面对的潜在影响/限制是什么 我正在寻找理想的情况来选择合适

在为现有应用程序和后端服务开发开放ID连接模型的过程中,对于ID令牌和访问令牌的脱机JSON令牌验证和联机JSON令牌验证,我感到困惑

我的开放ID提供者:keydepeat

我的问题是关于令牌验证的想法,所以我不讨论实现细节

根据OIDC(开放式ID连接)

ID令牌将被颁发给请求资源的服务 一旦认证

现在,在资源服务器端是否确实需要使用开放ID提供者验证令牌(keydove)或基于公钥离线验证令牌。

如果我选择令牌验证的离线模型-我必须面对的潜在影响/限制是什么


我正在寻找理想的情况来选择合适的模型和讨论的权衡。

在线验证的唯一优势是同时撤销用户权限的可能性。通过离线验证,您可以证明令牌是由您的密钥斗篷发行的,并且没有人对其进行篡改。对每个请求进行在线验证太多了

例如,在前端中单击会导致许多api调用,而在同一秒内创建十几个rest请求到KeyClope并没有任何好处。建议缩短令牌生存期

您可以在短时间内实现令牌缓存并在线验证令牌,但如果您可以在KeyClope中降低令牌的生命周期,那又有什么意义呢


因此,总而言之,在超时期间(比如5分钟-应根据用例进行配置)以及超过此期限后,离线验证令牌,以了解其活性和有效性。

令牌验证是一个方面,但它不是一个完整的安全解决方案。您经常会发现,您需要来自令牌和其他来源的数据来正确授权对资源的访问

因此,您的解决方案取决于您想要授权的方式,也取决于非功能性需求,如可用性和性能


由于问题分离,我的个人偏好处于脱机状态-有关更多详细信息,请参阅我的。

在资源服务器端,是否确实需要使用开放ID提供商(KeyClope)验证令牌。

是的,您必须验证协议定义的ID令牌。令牌验证有许多步骤,但主要涉及签名验证、颁发者验证。完成后,您可以将ID令牌称为valid,从而将最终用户标记为待验证。这是OpenID Connect中的核心主体

对于离线,对公钥的验证就足够了。例如,这意味着当您的授权服务器更改密钥链时(这种情况很少见,并且在出现安全漏洞时会发生),您必须以某种方式再次更新密钥

此外,还有JWT encryption(),它为令牌验证添加了额外的安全层(如果您关心安全性的话)。但如果我是对的,Keyclope不支持这个

在线验证的优势

您始终依赖授权服务器来验证令牌的有效性

在线验证的缺点

您为授权服务器创建了更多流量。您的应用程序服务器还需要一个或多个API调用


无论如何,您总是需要授权服务器的公钥。

这部分回答了我的问题。因此,您建议同时进行离线和在线验证—缩短访问令牌的生命周期将使新令牌能够被提取。i、 e不是验证现有令牌,而是始终使用新令牌。我想那还是算作额外的电话吧。如果令牌在开放id提供程序中被撤销,则访问令牌生命周期用户将继续访问其新令牌或现有令牌验证。否。我建议在短时间内(如15分钟)购买新代币。我建议只对api调用进行脱机验证。大多数框架都是为您这样做的。我使用.NETCore,在初始化阶段,框架类从众所周知的配置加载公钥和其他数据。对每个api请求令牌进行验证,但仅在脱机时进行验证。脱机验证令牌时,检查令牌签名,以确保没有人更改令牌。您还需要检查算法和访问群体。如果您不在线检查令牌,那么在过去5分钟内您有可能撤销了用户角色,但这个问题对您的用例来说有多大?当有人离职时,我们会撤销用户权限,而这几分钟并不是什么大问题。此外,点击前端可以生成许多api调用,在一秒钟内十次访问KeyClove检查相同的令牌是没有意义的。我同意,我已经对这个答案进行了编辑。