【问题标题】:Route request through controller/action or straight to WebAPI from jquery通过控制器/动作路由请求或从 jquery 直接路由到 WebAPI
【发布时间】:2012-12-06 06:58:09
【问题描述】:

我们有一个 Api,它在每个请求上都需要一个“Api-Key”,在所有经过身份验证的请求上都需要一个用户“AccessToken”。目前,当用户登录时,他们会返回一个“AccessToken”,从那里发出的每个请求都会发送出去。

我的问题涉及我们当前使用此 API 的网站的工作流程。注意 - 网站和 Api 位于不同的解决方案/应用程序域中,目前它们在同一个盒子上,但后来我怀疑它们会是。

目前,网站将通过其 MVC 控制器/操作方法向 Api 发出所有请求。起初,我认为这是启动和运行它的最简单方法,而无需编写大量 jquery 来完成客户端的所有请求。另外,服务器知道它的 Api-Key 并使用存储了 AccessToken 的表单身份验证。

我想我们都知道,如果我跳过网络服务器并直接从 Jquery 转到 WebApi,它会更快,但是,在我对这个过程的初步审查中,我遇到了身份验证问题。

最后的问题:)

我知道我可以在 ajax 中使用之前发送并修改标题, 但是,1 如何获取访问令牌和网站 API-Key 客户端安全地发送此信息?

如果我错了,请告诉我,但如果我使用 Razor 并使用 ViewData / ViewBag 然后在视图中将其转换为 javascript AccessToken 和 Api-Key 将坐在那里让全世界看到 当他们执行视图源时?

当前

Jquery -->  MVC Action -->  WebApi

更快

Jquery -->  WebApi

我注意到大多数 Api Wrapper 都是在 MVC 控制器/动作中使用的,因此我实际上认为我这样做的方式可能是正确的方式?

干杯

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-web-api


    【解决方案1】:

    如果您需要将 API 密钥保密,则应将其远离客户端

    我认为您应该保持原样代理事物。如果您需要保护从客户端到服务器的通信,请这样做,但不要将您的 API 密钥直接暴露给客户端。

    如果访问令牌仅持续一小段时间,并且您的 API 提供的方法不需要严格的安全性,那么您可以简单地使用访问令牌公开它们并保持您的 API 密钥隐藏在服务器。

    我认为无论哪种方式,您都是在代理。只是一个问题,您希望保护从客户端到服务器的通信的安全程度。然后可以按原样或您认为合适的其他方式实现从服务器到 API。

    除此之外,我建议让您的控制器尽可能地笨拙。让他们首当其冲地把繁重的工作交给进行 API 调用的服务层。

    【讨论】:

    • 是的,我开始认为这个问题可能会从范围中删除,以当前的方式进行操作给了我们更多的灵活性!正如你所说的安全。干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多