【问题标题】:Is it possible to restrict access to REST API built using Web API 2?是否可以限制对使用 Web API 2 构建的 REST API 的访问?
【发布时间】:2017-09-28 13:45:08
【问题描述】:

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

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

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

我已经阅读了这些文档Security, Authentication, and Authorization in ASP.NET Web API 我只是不确定这些场景中的哪些适用于我,或者是否有任何可以满足我的要求。

编辑 - 另一条信息,我的 Web 服务正在 Azure 上运行,以防万一。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      有不同的方法来验证你的 web 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 找到参考

      希望对你有帮助,谢谢。

      【讨论】:

        猜你喜欢
        • 2012-02-26
        • 2015-11-12
        • 2019-06-07
        • 2015-04-23
        • 2023-03-28
        • 2021-12-25
        • 1970-01-01
        • 1970-01-01
        • 2016-01-04
        相关资源
        最近更新 更多