Asp.net web api 为了保护WebApi,我如何在UseWindowsAzureActiveDirectoryBeareAuthentication与UseJWTBeareAuthentication与。

Asp.net web api 为了保护WebApi,我如何在UseWindowsAzureActiveDirectoryBeareAuthentication与UseJWTBeareAuthentication与。,asp.net-web-api,azure-active-directory,Asp.net Web Api,Azure Active Directory,有许多代码示例显示如何通过在Startup.cs中注册身份验证来保护WebApi,它们都使用UseWindowsAzureActiveDirectoryBeareAuthentication、UseJWTBeareAuthentication、UseOpenIdConnectAuthentication或UseOAuth2Authentication的Owin中间件中的任意一个。但我找不到任何文档来解释如何选择这些选项。他们似乎都是基于持票人代币设定索赔 在某些情况下,一种方法比其他方法更合适,

有许多代码示例显示如何通过在Startup.cs中注册身份验证来保护WebApi,它们都使用UseWindowsAzureActiveDirectoryBeareAuthentication、UseJWTBeareAuthentication、UseOpenIdConnectAuthentication或UseOAuth2Authentication的Owin中间件中的任意一个。但我找不到任何文档来解释如何选择这些选项。他们似乎都是基于持票人代币设定索赔


在某些情况下,一种方法比其他方法更合适,还是随机选择?

在我看来,为了通过使用Azure AD的承载令牌来保护web api,通常我们可以在自己的启动类中使用UseWindowsAzureActiveDirectoryBeareAuthentication扩展方法和UseJWTBeareAuthentication扩展方法

在asp.net core中,您可以直接使用Microsoft.AspNet.Authentication.JWTBear包。此包提供中间件,使应用程序能够接收OpenID Connect承载令牌。代码示例供您参考

通常的WindowsAzureActiveDirectoryBeareAuthenticationOnMiddleware使用 v2.0终结点不支持的元数据终结点。如果使用v2.0端点,则可以使用UseJWTBeareAuthentication。请参阅代码示例。在代码示例中,它使用UseAuthBeareAuthentication,在asp.net核心中,它被JWT承载中间件重命名/替换

总结:

  • 在使用Azure AD v1.0端点的.Net Framework中,您最好使用
    UseWindowsAzureActiveDirectoryBeareAuthentication
    ()

  • 在使用Azure AD v1.0端点的Asp.net Core中,您应该使用
    UseJWTBeareAuthentication
    ()

  • 在使用Azure AD v2.0端点的.Net Framework中,您可以使用
    UseAuthBeareAuthentication
    ()或
    UseJWTBeareAuthentication

  • 在使用Azure AD v2.0端点的Asp.net Core中,您应该使用
    UseJWTBeareAuthentication


  • Nan Yu是对的,但除了.NET/.NET core和V1.0与V2.0之外,还有另一个维度:是保护Web API还是Web应用程序:

    • useWindowsAzureActiveDirectoryBeareAuthentication
      ASP.NET中使用 Web APIs,使用Azure AD V1端点(它需要V1元数据)
    • UseJwtBearerAuthentication
      用于ASP.NET核心Web API(V1端点)
    • UseOpenIdConnectAuthentication
      用于ASP.NET Web应用程序中
    • useAuth2Authentication
      可在与V2端点通话时在full.NET中使用