gpt4 book ai didi

c# - 如何使 .NET Web Api 仅对我的应用程序私有(private)

转载 作者:太空狗 更新时间:2023-10-30 00:51:39 26 4
gpt4 key购买 nike

我创建了一个新的 Web Api MVC4 项目并使用 API Controller 构建了一个 RESTful API,然后我使用常规 MVC Controller 使用 HMTL5/KnockoutJS/JS 呈现 View 。

View 通过 REST Api 与应用程序交互(baseUrl 属性指向我给定实体的正确 REST 端点):

        this.Post = function (entity) {

return $.ajax(baseUrl, {
type: 'post',
data: ko.toJSON(entity),
contentType: 'application/json',
dataType: 'json'
});
};

现在,我怎样才能让只有我的应用程序可以使用(或查看)我的 RESTful API?

最佳答案

处理将某些内容设为应用程序私有(private)的最佳方法始终是在网络级别进行处理。甚至不要将 Web API 暴露给外界。将它放在 DMZ 后面,并专门为面向用户的应用程序在防火墙上打一个洞。然后,任何其他东西都无法触及它。

编辑

抱歉,我没有注意到您是通过 AJAX 访问它的,所以我的建议在技术上行不通。但是,如果您只需要对少数端点进行客户端访问,则此方法仍有一些优点。您可以在应用程序中设置仅将请求代理到私有(private) API 端点的操作,然后在面向用户的应用程序上为 AJAX 调用操作,而不是直接调用 Web API。

但是,如果所有内容都需要在客户端可用,那么您必须公开 Web API。那时,身份验证是您唯一的选择,但是几乎不可能保护该客户端(您还必须存储身份验证 token 或方法来对客户端进行身份验证,以允许任何想要查看的人在你的代码中模拟你所做的)。

通常,如果代码是公开的(无需身份验证即可使用),那么您只想公开非原子端点(GET 请求和其他实际上不会更改任何数据的东西)。一旦用户通过面向用户的应用程序进行身份验证,您就可以公开原子端点,但它应该仅限于他们应该有权更改的内容。您还应该只使用他们的凭据来对您的 Web API 进行身份验证,而不是为您的应用程序使用一些全局凭据集。这样,您可以在 Web API 级别控制他们的访问权限,并拒绝更改他们无权访问的内容的请求。任何更全局化的东西都应该只通过您的 Web 应用程序,代理到我的回答中首先描述的真正私有(private)的 Web API。

关于c# - 如何使 .NET Web Api 仅对我的应用程序私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25848816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com