我有几个客户端应用程序正在使用的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中的某个路由一起使用。
什么是最佳做法,如何将其扩展到可单独访问的部分?
答案 0 :(得分:0)
您可以为ActionFilterAttribute
创建Authorization
并在所有操作中使用它。
您可以根据自己的要求实施FrameworkAuthorise
过滤方法。
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
}