我正在使用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
我能够获得Button的授权,但是它比接受web.config文件中的passwd接受所有随机字符串,数字和获得授权。
假设用户输入的api-key为“ suyguhuus”(任何随机字符串/数字),则它应该是未经授权的,并且应该只接受Web.config中定义的“ PASSWORD”值,并且只有在得到用户授权的情况下,才允许用户与其API通信。
任何人都可以协助授权上述用例。
您是否已使用密钥授权属性装饰控制器?