如何为为ASP.NET WEB API创建的swagger UI启用API-KEY授权

问题描述 投票:0回答:1

我正在使用swagger.net创建api文档,并希望启用API-KEY身份验证以扩展UI。到目前为止,我已经尝试过了。

public class SwaggerConfig
    {

        public static void Register()
        {
            var thisAssembly = typeof(SwaggerConfig).Assembly;

            GlobalConfiguration.Configuration
                .EnableSwagger(c =>
                    {
 c.ApiKey("apiKey", "header", "API Key Authentication", typeof(KeyAuthorizeAttribute));
                      }
}
}

KeyAuthorizeAttribute.cs文件包含:

  public class KeyAuthorizeAttribute : AuthorizeAttribute
        {
            static string _password = null;

            private string Password
            {
                get
                {
                    if (string.IsNullOrEmpty(_password))
                        _password = ConfigurationManager.AppSettings["PASSWORD"];
                    return _password;
                }
            }



        protected override bool IsAuthorized(HttpActionContext actionContext)
            {
                IEnumerable<string> apiKey;
                if (actionContext.Request.Headers.TryGetValues("apiKey", out apiKey))
                {
                    return apiKey.First() == Password;
                }
                return false;
            }

    }

ConfigurationManager.AppSettings [“ PASSWORD”]的值在Web.config文件中设置为12345

enter image description here

我能够获得Button的授权,但是它比接受web.config文件中的passwd接受所有随机字符串,数字和获得授权。

假设用户输入的api-key为“ suyguhuus”(任何随机字符串/数字),则它应该是未经授权的,并且应该只接受Web.config中定义的“ PASSWORD”值,并且只有在得到用户授权的情况下,才允许用户与其API通信。

任何人都可以协助授权上述用例。

asp.net swagger-ui web.api
1个回答
0
投票

您是否已使用密钥授权属性装饰控制器?

© www.soinside.com 2019 - 2024. All rights reserved.