在 asp.net core 3.1+ 中使用多个中间件进行身份验证和授权

     2023-03-27     79

关键词:

【中文标题】在 asp.net core 3.1+ 中使用多个中间件进行身份验证和授权【英文标题】:Authentication and authorization with multiple middlewares in asp.net core 3.1+ 【发布时间】:2021-05-11 06:10:42 【问题描述】:

我正在尝试在 asp.net core 3.1 API 项目中配置身份验证和授权中间件,以便能够从以下位置授权用户:

本地 IdentityServer4 (IDS) 和 在 Azure (AAD) 中管理的 AD。

我计划在这两种情况下都使用 JWT 不记名令牌来调用 API 端点。

IDS 用户在移动应用程序中根据 IDS 进行身份验证。 AAD 用户在管理员 SPA 中针对 AAD 进行身份验证。 Web api 为 IDS 用户提供单独的公共端点,为 AAD 用户提供管理端点。

有很多关于如何分别为 IDS 和 AAD 配置 Web API 的工作示例,而不是一起配置。

有没有人举个例子说明应该如何做到这一点?

是否甚至可以对传入的 JWT 不记名令牌使用不同的身份验证方案(例如 JwtBearerDefaults.AuthenticationSchemeOpenIdConnectDefaults.AuthenticationScheme)?

我们将不胜感激。

【问题讨论】:

【参考方案1】:

您可以有多个 AddOpenIdConnect 方案,一个用于 AzureAD,一个用于 IdentityServer,然后让用户挑战其中一个,例如:

等待 HttpContext.ChallengeAsync("identityserver"); 要么 等待 HttpContext.ChallengeAsync("azuread");

JwtBearerDefaults 仅处理传入的令牌并从中创建用户。

但是每个 JwtBearer API 都喜欢有一个“权威”服务器(不是多个)。所以你可能需要添加多个 AddJwtBearer(每个服务器一个)。

或者您使用 IdentityServer 作为您的主要授权提供者,然后通过 IdentityServer 登录到 Azure。因此,您的内部服务器只需要了解 IdentityServer 及其令牌。

【讨论】:

谢谢。我去看看。 brb :)

如何在 ASP.NET Core 3.1 中使用 Java?

】如何在ASP.NETCore3.1中使用Java?【英文标题】:HowtouseJavainASP.NETCore3.1?【发布时间】:2022-01-0917:41:56【问题描述】:我正在使用ASP.NET构建一个RESTAPI,理想情况下它应该能够使用Java代码。我已经设法在一个简单的控制台应用程序... 查看详情

如何在 ASP.NET Core 3.1 中启用多重身份验证?

...020-08-3101:32:49【问题描述】:在我的aspnetcore3.1项目中,我使用jwt进行身份验证。问题是我也在使用azure客户端来获取vm大小名称列表,并且它也在使用Bearer令牌。现在测试我使用azure中的AllowAnonymo 查看详情

如何在 Asp.net Core 3.1 中使用 Ajax 刷新或重新加载 ViewComponent?

】如何在Asp.netCore3.1中使用Ajax刷新或重新加载ViewComponent?【英文标题】:HowtorefreshorreloadaViewComponentwithAjaxinAsp.netCore3.1?【发布时间】:2021-10-2702:12:33【问题描述】:我希望FavoriteComponent在单击“a”标签时刷新?HTML:<divid="favari... 查看详情

如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量

】如何使用C#在ASP.NETCore3.1MVC中使用会话变量【英文标题】:HowtousesessionvariablesinASP.NETCore3.1MVCusingC#【发布时间】:2021-09-2605:01:19【问题描述】:我在处理会话对象时遇到了问题。设置和进入同一个控制器可以正常工作,我的麻烦... 查看详情

如何使用 Visual Studio 2019 在 Docker 容器中运行 ASP.NET Core 3.1 项目?

】如何使用VisualStudio2019在Docker容器中运行ASP.NETCore3.1项目?【英文标题】:HowtorunanASP.NETCore3.1projectinaDockercontainerwithVisualStudio2019?【发布时间】:2020-04-2114:35:36【问题描述】:我创建了一个基于ASP.NETCore3.1框架的WebAPI项目。后来,... 查看详情

在 ASP.NET Core 3.1 中使用带有 HttpContext.Response 的新 Json 序列化程序

】在ASP.NETCore3.1中使用带有HttpContext.Response的新Json序列化程序【英文标题】:UsingnewJsonserializerwithHttpContext.ResponseinASP.NETCore3.1【发布时间】:2020-06-2715:37:35【问题描述】:当我们想在ASP.NETCore的管道中将对象序列化为JSON字符串时... 查看详情

在 ASP.NET Core 中使用多个身份验证方案

】在ASP.NETCore中使用多个身份验证方案【英文标题】:UsingmultipleauthenticationschemesinASP.NETCore【发布时间】:2017-10-0316:31:39【问题描述】:我有使用ASP.NETCore开发的WebAPI,我需要能够为同一服务使用基本和不记名身份验证方案。由于... 查看详情

在 ASP.NET Core 应用程序中使用多个 HttpClient 对象

】在ASP.NETCore应用程序中使用多个HttpClient对象【英文标题】:UsingmultipleHttpClientobjectsinanASP.NETCoreapplication【发布时间】:2020-01-0310:09:44【问题描述】:当有多个客户端(公司)使用ASP.NETCore应用程序并且必须在每个公司的ASP.NET应... 查看详情

在 ASP.NET Core 3.1 中上传和下载大文件?

...布时间】:2022-02-0122:36:33【问题描述】:我正在开发一个使用干净架构的ASP.NETCore3.1API项目,并且我有以下类库(层):基础设施(安全材料和上传助手等...)持久性(DA层)域(域模型)应用程序(用例-业务逻辑)API(API项目... 查看详情

在 ASP.net core 3.1 Razor Pages 中打印 PDF

...21-04-2818:49:57【问题描述】:在学习ASP.netcore的过程中,我使用asp.netcore3.1创建了一个简单的CRUD应用程序。我想将我的详细信息页面打印为发票。我环顾四周,似乎在完整的.NetFramework中打印PDF更可用。谁能指出我正确 查看详情

在 ASP.net core mvc 3.1 中的 HtmlHelper 扩展方法中使用 DataAnnotation 本地化器

】在ASP.netcoremvc3.1中的HtmlHelper扩展方法中使用DataAnnotation本地化器【英文标题】:UsingDataAnnotationlocalizerinyourextensionmethodforHtmlHelperinASP.netcoremvc3.1【发布时间】:2020-08-0809:35:39【问题描述】:我希望对HTMLHelper进行扩展,以显示我的... 查看详情

在 swagger ui 中使用 asp.net core 3.1 中的 Swashbuckle 6.0.5 使 AuthorizationUrl 可配置

】在swaggerui中使用asp.netcore3.1中的Swashbuckle6.0.5使AuthorizationUrl可配置【英文标题】:makeAuthorizationUrlconfigurableinswaggeruiusingSwashbuckle6.0.5inasp.netcore3.1【发布时间】:2021-03-0521:10:10【问题描述】:在asp.netcore的swagger中使用带有隐式流的... 查看详情

Wcf 服务在 .NET Core 3.1 控制台应用程序中工作,但在 ASP.NET Core 3.1 Web API 中无法工作

...连接到基于https、自定义客户端证书的连接服务。我正在使用Bas 查看详情

如何正确解析要在 ASP.NET Core 3.1 的 ConfigureServices() 中使用的服务?

】如何正确解析要在ASP.NETCore3.1的ConfigureServices()中使用的服务?【英文标题】:HowtocorrectlyresolveservicestouseintheConfigureServices()inASP.NETCore3.1?【发布时间】:2020-02-0522:24:35【问题描述】:我有一个基于ASP.NETCore3.1的应用程序。在应用... 查看详情

如何在我的 asp.net core 3.1 应用程序中播种用户和角色?

...-0109:17:30【问题描述】:我尝试在我的IdentityDataContext类中使用protectedoverridevoidOnModelCreating(ModelBuilderbuilder)并创建了一个将为 查看详情

在 ASP.NET Core Identity 中使用 Authorize 属性检查多个策略之一

】在ASP.NETCoreIdentity中使用Authorize属性检查多个策略之一【英文标题】:CheckingforoneofmultiplepolicieswithAuthorizeattributeinASP.NETCoreIdentity【发布时间】:2017-11-0918:51:37【问题描述】:我已经在ASP.NETCore应用程序中设置了标准身份验证系统... 查看详情

在 Xunit 集成测试中检索 ASP.NET Core 3.1 数据库上下文

...est【发布时间】:2020-09-1419:09:14【问题描述】:我一直在使用Xunit为使用数据库的.NETCore3.1Web应用程序创建集成测试。为了测试,我从MicrosoftDocumentation切换到内存数据库。Custo 查看详情

路由覆盖在 asp.net core 3.1 剃须刀页面中不起作用

...rpages【发布时间】:2020-07-1505:44:16【问题描述】:我正在使用Asp.NetCore3.1Razorpages。我需要覆盖我所在区域的其中一个页面的路线。我的Area-Blog中有Home页面,当前路线是localhost/blog/home。我需要将其更 查看详情