是否可以限制对使用Web API 2构建的REST API的访问?

时间:2017-05-01 04:03:23

标签: asp.net azure asp.net-web-api asp.net-web-api2

我使用ASP.NET Web API 2构建了一个REST API,因此我可以将数据从后端数据库传送到在任何平台(移动设备,Web,桌面等)上运行的应用程序。但是到目前为止,我只是打电话给网站使用控制器我需要来自它的数据,它会在响应中发回JSON字符串。

但是,数据有点特殊,没有什么可以阻止其他开发人员简单地调用控制器并获取完全相同的数据并围绕它构建自己的应用程序。

我的问题是 - 无论如何都限制对API的访问,以便只有我的应用程序才能从服务器获得有效的响应。 (即阻止其他开发人员使用我的REST API)

我已经阅读了这些文档Security, Authentication, and Authorization in ASP.NET Web API我不确定这些方案中哪些适用于我,或者是否有任何方法可以解决我的问题。

编辑 - 另一条信息,我的网络服务在Azure上运行,以防它相关。

2 个答案:

答案 0 :(得分:0)

您是否碰巧检查了基于令牌的身份验证?请完成https://stackoverflow.com/a/38670221/4868839并且https://www.youtube.com/watch?v=rMA69bVv0U8必须是一个好的开始。

答案 1 :(得分:0)

有不同的方法来验证您的网络API。

  1. ASP.NET Web API 2中的身份验证过滤器 使用您可以自定义身份验证筛选器 你可以参考样本Reference link
  2. 使用ASP.NET Web API 2,Owin和Identity进行基于令牌的身份验证

    //App_Start/Startup class
    public void ConfigureAuth(IAppBuilder app)
    {
        OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/v1/accesstoken"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(AppConfiguration.AccessTokenExpireDuration),
            Provider = new SampleOAuthProvider() // class that override your method
        };
    
    
    
        // Token Generation
        app.UseOAuthBearerTokens(OAuthServerOptions);
    }
    

    您可以从inherits Default implementation of IOAuthAuthorizationServerProvider used by Authorization

  3. 找到参考

    我希望它能帮助你谢谢。