扬鞭-Net的支持API密钥验证(Swagger-Net supporting API Key au

2019-10-29 06:16发布

我们在我们的WebAPI应用程序中使用令牌认证。 每个呼叫(其获得密钥其他则方法)使用相同的模式。

Authorization: our-token v01544b7dce-95c1-4406-ad4d-b29202d0776c

我们实施认证使用AttributeIActionFilter

控制器看起来就像这样:

[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");

扬鞭U​​I显示“授权”按钮,我可以粘贴到令牌在野外弹出。 然而,没有头在任何测试通过。 而且没有方法对他们“锁”图标。

编辑:

我也尝试:

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==

Answer 1:

如果我没有记错,你应该有:

c.ApiKey("our-token", "header", "Our Token Authentication", typeof(TokenAuthAttribute));

随着到位,所有标有行动TokenAuth应显示一个锁形图标


你可以看到它在行动中矿之一:
https://turoapi.azurewebsites.net/swagger/ui/index

而背后的代码是在这里:
https://github.com/heldersepu/TuroApi/blob/master/TuroApi/App_Start/SwaggerConfig.cs#L67




文章来源: Swagger-Net supporting API Key authentication