我们在我们的WebAPI应用程序中使用令牌认证。 每个呼叫(其获得密钥其他则方法)使用相同的模式。
Authorization: our-token v01544b7dce-95c1-4406-ad4d-b29202d0776c
我们实施认证使用Attribute
和IActionFilter
控制器看起来就像这样:
[RoutePrefix("api/tms/auth")]
public class AuthController : BaseController
{
public ISecurityService SecurityService { get; set; }
[TokenAuth]
[Route("logout")]
[HttpPost]
public HttpResponseMessage Logout()
{
try
{
this.SecurityService.InvalidateAccessToken(this.StaticContextWrapperService.AccountId, token, HttpContext.Current.Request.UserHostAddress);
// Return OK status
return new HttpResponseMessage(HttpStatusCode.OK);
}
catch (LoginException le)
{
return this.LogoutFailureResponse(le.Message);
}
}
private HttpResponseMessage LogoutFailureResponse(string message)
{
return new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new StringContent(message, Encoding.UTF8, "text/plain")
};
}
}
扬鞭配置有以下几点:
c.ApiKey("our-token", "header", "Our Token Authentication");
扬鞭UI显示“授权”按钮,我可以粘贴到令牌在野外弹出。 然而,没有头在任何测试通过。 而且没有方法对他们“锁”图标。
编辑:
我也尝试:
c.ApiKey("our-token", "header", "Our Token Authentication", typeof(TokenAuthAttribute));
当属性就是属性:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class TokenAuthAttribute : Attribute
{
}
然后我们使用IActionFilter检查施加的方法和我们检查的权限,多数民众赞成属性。 这样做是通过DI使用的服务。
EDIT2:
我做了改变属性的声明方式:
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class TokenAuthAttribute : AuthorizeAttribute
{
}
比后扬鞭UI开始显示出所有方法作为担保,所以它并分析它的其实AuthorizeAttribute
,不只是属性
之后,它开始把头部像这样: our-token: ZGV2OnYwMTA2YjZmYjdhLWRlNTUtNDZlNC1hN2Q4LTYxMjgwNTg2M2FiZQ==
它应该是: Authorization: our-token GV2OnYwMTA2YjZmYjdhLWRlNTUtNDZlNC1hN2Q4LTYxMjgwNTg2M2FiZQ==