【问题标题】:.NET core - Configure JWT Authentication at runtime.NET 核心 - 在运行时配置 JWT 身份验证
【发布时间】:2020-04-10 10:11:56
【问题描述】:

我有一个 ASP.NET Core 2 Web 应用程序,并且我在需要身份验证的控制器上使用 [Authorize] 属性。作为身份验证,我使用的是JWT,我可以使用

Startup 类中配置它
.AddJwtBearer(options => {
    options.Audience = "....";
    options.Authority = "....";
});

这会很好用。我的问题是我在启动时没有受众和权限信息,我必须在运行时进行配置。

有什么办法吗?

【问题讨论】:

  • 我不知道是否有办法按照您的要求做,但是...一旦 Startup 类执行了 ConfigureServicesConfigure 方法,您的 Web 应用程序将启动并运行并准备好接收请求。那么,您何时会知道这些关于受众和权威的信息?
  • 基本上,第一个访问 Web 应用程序的用户将进行设置。当此用户调用公共路由时,有关受众和权限的信息将在运行时的某个时间点知道,这也是我想尝试重新配置身份验证的时候。

标签: c# asp.net authentication asp.net-core jwt-auth


【解决方案1】:

你可以试试:

  1. 注册多 jwt 身份验证模式,并根据 request 中的参数/reqeust 标头值动态选择所需的模式。点击here 获取代码示例。

  2. 配置并替换您的 ISecurityTokenValidator。使用 DI 注入IHttpContextAccessor 以从请求中读取数据。单击herehere 获取代码示例。

  3. 使用 JwtSecurityTokenHandler 手动验证 JWT 令牌。点击here查看代码示例。

【讨论】:

    猜你喜欢
    • 2017-05-13
    • 2019-11-03
    • 2019-02-23
    • 2019-06-23
    • 1970-01-01
    • 2021-10-07
    • 2020-07-20
    • 1970-01-01
    • 2018-11-10
    相关资源
    最近更新 更多