gpt4 book ai didi

asp.net-mvc - 使用 REST API 进行身份验证

转载 作者:行者123 更新时间:2023-12-02 15:20:13 26 4
gpt4 key购买 nike

我正在 asp.net mvc 中构建 REST API。我的系统使用表单例份验证。用户名/密码或 openId/fbconnect 等。如果我在某个操作上具有 [Authorize] 属性,Android 应用程序或桌面应用程序将如何访问该方法?

或者更好的问题是,我将如何设计桌面应用程序来进行身份验证?我需要传递 API key 或某种 token 吗?或者桌面应用程序的行为会像浏览器一样并使用内部 cookie?我不太确定 RESTful API 如何在具有身份验证的网络浏览器之外工作。

最佳答案

我不会在 REST API 中使用 cookie。 FormsAuthentication 是一种基于 cookie 的方法。相反,调用者应该在 header 中或作为请求参数为每个请求提供身份验证凭据。

例如,您可以使用基本身份验证来传输用户名和密码,或者添加带有某些加密访问 token 的自定义身份验证 header (这不是很 RESTful)。您还可以实现 OAuth,其中请求者将为每个请求提供访问 token 。

我会编写一个自定义AuthorizeAttribute来在代码中执行身份验证,这为您提供了很多控制权。或者,您可以使用 Controller 基类并重写 OnAuthorization 方法。

API 不应提供密码挑战:在网络应用程序中,未经授权的请求通常会将用户重定向到登录页面。在 API 中,请求将仅返回错误代码。现在,客户端应用程序的工作是通过对话框询问用户(如果适用)。在移动应用程序中,您可能想要显示一个对话框。在使用 OAuth 的 Web 应用程序中,您可能希望重定向到身份验证服务器。

如果您想测试您的 REST API,我建议您使用 REST Console for Google ChromecURL 。前者对于初学者来说更容易,并且带有一个漂亮的 GUI,而 cURL 为您提供更高的保真度和大量协议(protocol)。

编辑

有点迂腐的注释:一些 API,甚至是相当大的提供商的 API,例如Twitter 会不时返回 401 状态代码,通常会省略(强制)WWW-Authenticate header ,因为他们无意挑战客户端。

关于asp.net-mvc - 使用 REST API 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209046/

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