【问题标题】:OpenIdConnect RefreshToken handling in Asp.Net CoreAsp.Net Core 中的 OpenIdConnect RefreshToken 处理
【发布时间】:2016-10-09 00:13:35
【问题描述】:

我们在一个 mvc 应用程序中使用 OpenIdConnect,并且想知道如何处理刷新令牌。

该应用程序由一个相当简单的 Web 前端和一个由网站调用的后端 Web 服务组成(用户代理在这里永远不会直接与后端对话,因为后端仅面向 Intranet)。

后端配置为使用 JwtBearerTokens 并且工作正常。
前端配置为使用 OpenIdConnect,并从本地 STS 接收 IdToken、AccessToken 和 RefreshToken。
AccessTokens 由 AspNet Core 的 OpenIdConnectHandler 从 access_code 自动交换。

当AccessToken即将过期时,我们尝试使用RefreshToken获取一个新的AccessToken。最初我们打算使用 ADAL,但从 API 中删除了 AcquireTokenByRefreshToken。由于我们不通过 ADAL 进行身份验证,而是使用 AspNet 内置的 OIDC,因此我们不能依赖 ADALS(非 HA)TokenCache。 那么是否有任何(内置)方法可以自动执行此操作?
如果没有 - 当我们自己实现它时 - 我们将新获得的 AccessToken 存储在哪里 - 我想将它放入 HttpContext.Authentication 中,但这似乎没有提供任何设置器?

【问题讨论】:

    标签: security asp.net-core openid-connect adal


    【解决方案1】:

    如果您希望将应用程序与 AAD 集成,则无需管理刷新令牌。 ADAL 为您管理它(如 here 所述),除非您有任何极端情况。

    如果您遇到非 AAD 场景,Identity Server libraries 将为您完成这项工作。

    Here 是使用上述库的 Identity Server 3 的示例实现。

    【讨论】:

    • 据我了解,如果我使用 ADAL 来获取令牌,我会尽量不这样做,因为 AspNet-Core 已经为我做到了,ADAL 会为我管理。另外:据我所知,ADAL 将令牌保存在内存中,这不太适合多个服务器前端。
    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 2019-10-21
    • 2018-02-23
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 2019-02-11
    • 2021-10-17
    相关资源
    最近更新 更多