【问题标题】:IdentityServer4 - Refresh Tokens Hybrid Flow - Cookies and storageIdentityServer4 - 刷新令牌混合流程 - Cookie 和存储
【发布时间】:2020-02-14 12:17:53
【问题描述】:

我已关注 Quickstart Hybrid Flow here,但我需要一些有关在使用刷新令牌后保存令牌的帮助和建议。

如果我说的是真的,选项 SaveTokens 允许将令牌保存在 cookie 中。

首先,将访问和刷新令牌存储在 cookie 中是否是个好主意(关于安全性的担忧)?

其他问题,我通过代码正确检索刷新令牌 var refreshToken = await HttpContext.GetTokenAsync("refresh_token"); 但是现在,当我获得新的访问令牌时,我该如何存储它(没有 SetTokenAsync 方法)?...因为没有它,当我调用 var refreshToken = await HttpContext.GetTokenAsync("access_token"); 时我会检索旧的访问令牌而我想得到新的。

谢谢

【问题讨论】:

  • 看一下我的回答here的信息。
  • 谢谢,它帮助我在使用刷新令牌后保存令牌(访问和刷新)。您对将它们保存在 cookie 中(安全与否)有什么看法……在这个流程中使用 PKCE 有用吗?

标签: .net security identityserver4 access-token refresh-token


【解决方案1】:

来自documentation:

交互式客户端应使用基于授权码的流程。到 防止代码替换,无论是混合流还是 PKCE 都应该 使用。

因此,PKCE 和混合流的组合是不必要的,而且可能没有用。

如果 PKCE 可用,这是解决问题的更简单的方法。

PKCE 已经是原生应用的官方推荐 和 SPA - 并且默认情况下也会发布 ASP.NET Core 3 OpenID Connect 处理程序也支持。

所以不要使用混合流,而是将其配置为interactive ASP.NET Core MVC client。

new Client
{
    ClientId = "mvc",
    ClientSecrets = { new Secret("secret".Sha256()) },

    AllowedGrantTypes = GrantTypes.Code,
    RequireConsent = false,
    RequirePkce = true,

    // where to redirect to after login
    RedirectUris = { "http://localhost:5002/signin-oidc" },

    // where to redirect to after logout
    PostLogoutRedirectUris = { "http://localhost:5002/signout-callback-oidc" },

    AllowedScopes = new List<string>
    {
        IdentityServerConstants.StandardScopes.OpenId,
        IdentityServerConstants.StandardScopes.Profile
    }
}

mvc 客户端具有预期配置的地方:

.AddOpenIdConnect("oidc", options =>
{
    options.Authority = "http://localhost:5000";
    options.RequireHttpsMetadata = false;

    options.ClientId = "mvc";
    options.ClientSecret = "secret";
    options.ResponseType = "code";

    options.SaveTokens = true;
});

我还可以推荐 Brock Allen 的 this post。这可能会回答您关于 cookie 的问题。也可以查看Dominick Baier的the post。

有关如何使用刷新令牌的信息,请阅读my answer here。

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 2017-08-20
    • 2021-10-07
    • 2023-03-24
    • 2018-07-07
    • 2019-03-23
    • 2019-03-21
    • 2020-01-09
    • 2020-09-12
    相关资源
    最近更新 更多