有许多代码示例显示如何通过在Startup.cs中注册身份验证来保护WebApi,并且它们都使用UseWindowsAzureActiveDirectoryBearerAuthentication,UseJwtBearerAuthentication,UseOpenIdConnectAuthentication或UseOAuth2Authentication中的任何一个Owin中间件。但我找不到任何文件说明如何选择这些。他们似乎都基于Bearer令牌设置ClaimsPrincipal。
是否有时候一个人适合其他人,或者这是一个随机的选择?
答案 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 。 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承载中间件重命名/替换。
摘要:
在使用Azure AD v1.0端点的.Net Framework中,您最好使用UseWindowsAzureActiveDirectoryBearerAuthentication
(code sample)。
在使用Azure AD v1.0端点的Asp.net Core中,您应该使用UseJwtBearerAuthentication
(code sample)。
在使用Azure AD v2.0端点的.Net Framework中,您可以使用UseOAuthBearerAuthentication
(code sample)或UseJwtBearerAuthentication
。
在使用Azure AD v2.0端点的Asp.net Core中,您应该使用UseJwtBearerAuthentication
。