Asp.net 5 web api bearer认证和多个领域

时间:2016-06-23 14:19:10

标签: authentication asp.net-web-api jwt bearer-token asp.net5

我有几个客户端应用程序正在使用的webapi后端。 api使用jwt身份验证进行保护,它基于以下示例:https://github.com/mrsheepuk/ASPNETSelfCreatedTokenAuthExample。由于我对基于令牌的身份验证的所有概念还不是很满意,我可以在此使用一些指导。我的问题是我需要我的应用程序使用相同的API但限制每个应用程序访问特定区域或控制器。

根据示例,我可以使用以下方法保护区域内的方法:

[Authorize("Api")]

使用

在启动时添加策略
    authOptions.AddPolicy("Api", new AuthorizationPolicyBuilder()
        .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) // "Bearer" scheme
        .RequireAuthenticatedUser().Build());

对于来自客户端的安全请求,我通常有一个角度2应用程序,只需将jwt添加到标题中,如下所示:

headers.append('Authorization', 'Bearer ' + jwt);

我不知道这里的所有机制,但我假设当请求安全方法时,“Api”属性修饰决定/限制哪个策略将与api中的某个路由一起使用。

什么是最佳做法,如何将其扩展到可单独访问的部分?

1 个答案:

答案 0 :(得分:0)

您可以为ActionFilterAttribute创建Authorization并在所有操作中使用它。

您可以根据自己的要求实施FrameworkAuthorise过滤方法。

enter image description here

Global.ApiKey是您的应用程序的唯一代码,用于识别您是否有权访问该应用程序。

     [FrameworkAuthorise(Global.ApiKey, AuthorisationType.None)]
     public async Task<IHttpActionResult> Get()        
     { 
        // code goes here
     }

    [FrameworkAuthorise(Global.ApiKey, AuthorisationType.Bearer)]
     public async Task<IHttpActionResult> Post()        
     { 
        // code goes here
     }