为了保护WebApi,我如何在UseWindowsAzureActiveDirectoryBearerAuthentication和UseJwtBearerAuthentication vs.之间做出选择

时间:2017-09-24 20:59:53

标签: asp.net-web-api azure-active-directory

有许多代码示例显示如何通过在Startup.cs中注册身份验证来保护WebApi,并且它们都使用UseWindowsAzureActiveDirectoryBearerAuthentication,UseJwtBearerAuthentication,UseOpenIdConnectAuthentication或UseOAuth2Authentication中的任何一个Owin中间件。但我找不到任何文件说明如何选择这些。他们似乎都基于Bearer令牌设置ClaimsPrincipal。

是否有时候一个人适合其他人,或者这是一个随机的选择?

2 个答案:

答案 0 :(得分:2)

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

  • awk ' BEGIN { FS=OFS="\t" } { k = $1 FS $2 FS $3 FS $4 FS $5 FS $6 FS $7 FS $8 } NR==FNR { a[k]=$9; next } k in a { print $0, a[k] } ' file2 file1 用于 ASP.NET Web API ,使用Azure AD V1端点(它需要V1元数据)
  • UseWindowsAzureActiveDirectoryBearerAuthentication用于 ASP.NET核心Web API (确实是V1端点)
  • UseJwtBearerAuthentication用于 ASP.NET Web Apps
  • 与li端点通信时,
  • UseOpenIdConnectAuthentication可以在完整的.NET中使用。

答案 1 :(得分:1)

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

在asp.net核心中,您可以直接使用Microsoft.AspNet.Authentication.JwtBearer包。该软件包提供了中间件,使应用程序能够接收OpenID Connect bearer tokens.Code示例here供您参考。

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

摘要:

  1. 在使用Azure AD v1.0端点的.Net Framework中,您最好使用UseWindowsAzureActiveDirectoryBearerAuthenticationcode sample)。

  2. 在使用Azure AD v1.0端点的Asp.net Core中,您应该使用UseJwtBearerAuthenticationcode sample)。

  3. 在使用Azure AD v2.0端点的.Net Framework中,您可以使用UseOAuthBearerAuthenticationcode sample)或UseJwtBearerAuthentication

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