C# 处理客户端请求身份验证的正确方法

C# 处理客户端请求身份验证的正确方法,c#,api,asp.net-core,C#,Api,Asp.net Core,我目前正在使用.NET5和C#开发一个API。我面临的问题是,我需要获取/发布的客户端等需要不同类型的身份验证,包括: API密钥 客户端证书 非统组织 每个客户机都至少有一个,可能还有两个(API密钥+其他)。我正在努力找出如何实现这些调用。我想到了一些想法,但我不确定其中是否有一个真的足够。我正在使用HttpClient调用外部客户端。这些都将来自单个服务或控制器。对于每种类型的身份验证,我无法将它们拆分为不同的服务或控制器 以下是我的想法: 使用if或switch语句,根据所需的身份

我目前正在使用.NET5和C#开发一个API。我面临的问题是,我需要获取/发布的客户端等需要不同类型的身份验证,包括:

  • API密钥
  • 客户端证书
  • 非统组织
每个客户机都至少有一个,可能还有两个(API密钥+其他)。我正在努力找出如何实现这些调用。我想到了一些想法,但我不确定其中是否有一个真的足够。我正在使用
HttpClient
调用外部客户端。这些都将来自单个服务或控制器。对于每种类型的身份验证,我无法将它们拆分为不同的服务或控制器

以下是我的想法:

  • 使用if或switch语句,根据所需的身份验证类型应用必要的配置。这是迄今为止最糟糕的想法,会有太多的重复。这里没有干货
  • 使用
    HttpClient
    处理程序。实际上,创建三个处理程序(每种身份验证类型一个),并让请求在传递时激活正确的处理程序
  • 使用类型化客户端。但这只允许一个
    HttpClient
    与单个服务相关。我需要这三个都能提供任何服务
  • 在API中使用简单的中间件来处理请求及其身份验证(如有必要)
是否有人对如何做到这一点有任何建议,以及上述方法是否更可取