gpt4 book ai didi

Web Api 中的安全性

转载 作者:行者123 更新时间:2023-12-02 05:44:55 24 4
gpt4 key购买 nike

我刚刚使用 apicontroller 创建了我的第一个休息服务。我将它与 web 表单而不是 mvc-4 一起使用。我怎样才能在 Web 服务中实现安全性。请记住,浏览器以外的客户端可能会使用服务,如何继续设置安全性。当我们从浏览器针对使用表单例份验证的 asp.net 应用程序验证自己时,该应用程序返回一个身份验证 cookie,该 cookie 由浏览器在每个后续请求中转发,应用程序通过解密 cookie 知道用户已登录。
我在看tutorial on plural sight关于 web api 的安全性。他们主张我们应该有一个方法,如果传递 json 数据就可以登录用户。一旦登录,该方法将向客户端(浏览器和其他服务客户端)返回 auth cookie,并且客户端应在每个后续请求中发送此 cookie 以授权自己。这种身份验证方案对于网络服务来说是正常的还是有其他一些推荐的方式?问题更多的是实现什么而不是如何实现?

编辑: 我从@AliOstad 对这个 question 的回答中得到的想法是我应该为我的服务创建一个单独的登录方法,理想情况下应该在 https 上工作,并且此方法应该返回一个加密的 auth header ,包括用户的电子邮件和问题时间。一旦客户获得了 token ,他就可以通过在 auth header 中传递这个 token (到 andriod 应用程序等)来继续使用该服务,如果数据服务(与应该在 https 上工作的登录服务相反)我认为没有问题在 http 上运行,因为 token 将在 x 分钟后过期。在服务器端它完全没问题,但我的客户怎么知道他的 token 已经过期并且他需要在从数据服务获取数据之前去获取另一个 token ?我的第二个问题是,如果我以这种方式实现它,我将如何处理由 asp.net 应用程序(asp.net 应用程序和 web api 在同一应用程序上运行)对数据服务进行的 ajax 调用。在那里(在 javascript 中),我要么需要身份验证 token ,要么需要用户名和密码来获取身份验证 token ,但它们似乎都不可行?
我应该如何处理这些情况有什么想法吗?

最佳答案

Dominick Baier 是这方面的权威,他的博客中有一系列关于这个主题的文章。请参阅本系列的第一篇 here .

我真的无法用一个合理的小答案来总结,我认为你需要浏览一下帖子。


更新

how would my client know that his token has expired

与表单例份验证不同,当用户拥有过期 token 并重定向到登录屏幕时,Web API 会与 HTTP 响应代码进行通信 - 因为客户端很可能是机器而不是人类用户。

因此客户端代理不知道它是否有过期的 token ,而是当它使用其过期的 token 连接您的 API 时,返回 401(未授权)响应。此时客户端将尝试获取新 token 。

how would i handle ajax calls to data service that are made by asp.net application

他们不会进行 AJAX 调用,他们会:

  • 如果在同一个盒子上则直接调用(创建对象和调用方法)
  • 使用 HttpClient 调用服务并使用数据

关于Web Api 中的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10415551/

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