【问题标题】:Authorization using security token in WEB API without using Authentication在 WEB API 中使用安全令牌进行授权而不使用身份验证
【发布时间】:2016-11-16 06:25:13
【问题描述】:

如何在不使用任何登录的情况下使用安全令牌保护 WEB API。我们想在 Windows 服务中使用这个 WEB API 从其他数据库服务器获取数据。不能使用用户登录名或角色 我们尝试[Authorize] 属性,但都是徒劳的。 我试试这个

 [MyAuthorize]
    public class MasterDataController : ApiController
    {
        [HttpGet]
        public string myMethod(string Name)
        {
            return Name;
        }
    }

我的授权是

 public class MyAuthorizeAttribute : AuthorizeAttribute
    {
public override void OnAuthorization(AuthorizationContext Context)
  {
   //Some logic to validate token...
  }
}

WebApiConfig.cs 是

 public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Filters.Add(new AuthorizeAttribute());
            config.Routes.MapHttpRoute(
               name: "ActionGetPatientAndAppointmentInfo",
               routeTemplate: "TestAPI/{controller}/{action}",
               defaults: new 
               {
                   controller = "MasterData",
                   action = "myMethod"
               }
           );

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional}
            );


        }
    }

当我们在带有授权标头的 REST 客户端中测试方法时

OnAuthorization 方法本身并未执行。 响应总是显示未经授权的请求。

【问题讨论】:

    标签: asp.net-web-api windows-services authorization token


    【解决方案1】:

    这是 OAuth2 的完美场景。您需要能够生成令牌,然后保护 API 端点,因此只有在授权标头中使用此令牌的调用才会被执行。

    我建议考虑使用 Owin 之类的东西,它可以为您提供所需的一切。

    这是应用程序级别的授权,因此您将拥有两个密钥,一个 ClientID 和一个 ClientSecret,它们将用于生成令牌。这样,您甚至可以使用相同的 API 构建多个应用程序,每个应用程序都通过自己的一组密钥进行标识。

    这是一篇详细的文章,虽然有点旧,但展示了如何从头开始:

    https://eidand.com/2015/03/28/authorization-system-with-owin-web-api-json-web-tokens/

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 2014-11-18
      • 1970-01-01
      • 2017-08-16
      • 2015-10-02
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多