使用赠款类型代码

问题描述 投票:0回答:1

我对刷新访问令牌有疑问。 我正在使用IdentityServer 4.1.2带有以下配置:

new Client { ClientId = "myid", AllowedGrantTypes = GrantTypes.Code, RequireClientSecret = false, AccessTokenLifetime = 3600, RequirePkce = true, AllowOfflineAccess = true, ... }

您可以看到我是使用不推荐的隐式流,但是赠款类型设置为
code

MySpa客户端使用的是OIDC-CLIENT版本1.11.5,并以此方式配置: var config = { ... redirect_uri: `https://myspaurl/callback`, response_type: 'code', scope: 'openid profile offline_access', automaticSilentRenew: true, silent_redirect_uri: `https://myspaurl/static/silent-renew.html`, ... };

注意,我要要求

offline_access
示波器,所以我可以得到一个刷新令牌。
当我运行应用程序时,访问令牌每小时都可以更新。 在Chrome Developer工具中的“网络”选项卡中,我可以看到使用此请求URL https:// myidentityServer/connect/token更新访问令牌。我的silent_redirect_uri https://myspaurl/static/silent-renew.html永远不会被要求。 因此,我的问题是使用赠款类型

code而不是旧隐式流程时,silent_redirect_uri是否过时?

如果OIDC客户端可以获得刷新令牌,则它将使用它而不是尝试使用无声重定向URI。考虑下一个这些动作:

用户重新加载页面
refresh identityserver4 access-token
1个回答
3
投票
用户打开新的浏览器选项卡 /窗口

    如果RT在重新加载过程中不可用,那么OIDC客户端将落后于无声重定向的URI行为。
  • 多选项卡浏览可以使用刷新令牌的唯一方法是将RT(长期存在的凭证)存储在本地存储中。然后,您将拥有一个可靠的应用程序。
  • 注意,在隐藏或框架上使用无声重定向的URI在Safari浏览器中不起作用,因为它会丢弃第三方Cookie。预计其他浏览器将效仿。因此,在2021年,确实在隐藏的iframe上更新令牌。 security
问题还没有结束:

绝对不建议将RT存储在本地存储中,即使使用旋转刷新令牌,也不建议将RT存储在本地存储中。

2021建议是将刷新令牌存储在强烈加密的HTTP Samesite =严格的cookie中。这被称为前端模式的

返回端。 这很棘手,但值得一提的 - 也许是未来的目标。还请注意,

oidc-client-js现在是一个存档的项目。它由oidc-client-ts

(截至目前,该继任者尚未获得OIDC认证)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.