Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET核心-在运行时配置JWT身份验证_C#_Asp.net_Authentication_Asp.net Core_Jwt Auth - Fatal编程技术网

C# .NET核心-在运行时配置JWT身份验证

C# .NET核心-在运行时配置JWT身份验证,c#,asp.net,authentication,asp.net-core,jwt-auth,C#,Asp.net,Authentication,Asp.net Core,Jwt Auth,我有一个ASP.NET Core 2 Web应用程序,我正在需要身份验证的控制器上使用[Authorize]属性。作为身份验证,我使用的是JWT,我可以在启动时使用 .AddJwtBearer(options => { options.Audience = "...."; options.Authority = "...."; }); 这将非常有效。我的问题是,我在启动时没有访问群体和权限的信息,我必须在运行时对此进行配置。 有什么方法可以做到这一点吗?您可以尝试: 注册

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

.AddJwtBearer(options => {
    options.Audience = "....";
    options.Authority = "....";
});
这将非常有效。我的问题是,我在启动时没有访问群体和权限的信息,我必须在运行时对此进行配置。

有什么方法可以做到这一点吗?

您可以尝试:

  • 注册多jwt身份验证模式,并根据请求中的参数/request头值动态选择所需的模式。单击此处查看代码示例

  • 配置并替换ISecurityTokenValidator。使用DI注入
    IHttpContextAccessor
    从请求中读取数据。单击和获取代码示例

  • 使用
    JwtSecurityTokenHandler
    手动验证JWT令牌。单击此处查看代码示例


  • 我不知道是否有办法做到你所要求的,但是。。。一旦启动类执行了ConfigureServices和Configure方法,您的Web应用程序将启动并运行,并准备好接收请求。那么,您什么时候会知道有关受众和权限的信息呢?基本上,第一个访问web应用程序的用户将进行设置。当该用户调用公共路由时,有关访问群体和权限的信息将在运行时的某个时刻被知道,这也是我想要尝试和重新配置身份验证的时候。@NuhRuqa请看一下这个示例