asp.net-mvc – 使用REST API进行身份验证
我正在asp.net mvc中构建一个REST API.我的系统使用表单身份验证用户名/密码或openId / fbconnect等.如果我在某个操作上有[Authorize]属性,那么
Android应用程序或桌面应用程序将如何访问该方法?
或者更好的问题是,我如何设计桌面应用程序进行身份验证?我是否需要传递API密钥或某种某种令牌?或者桌面应用程序是否像浏览器一样使用内部cookie?我不太确定RESTful API如何在具有身份验证的Web浏览器之外工作. 解决方法
我不会在REST API中使用cookie. FormsAuthentication是一种基于cookie的方法.相反,调用者应该为标头中的每个请求提供身份验证凭据,或者作为请求参数.
例如,您可以使用基本身份验证来传输用户名和密码,或者使用某些加密访问令牌(不是非常RESTful)添加自定义身份验证标头.您还可以实现OAuth,其中请求者将为每个请求提供访问令牌. 我编写了一个自定义AuthorizeAttribute来在您的代码中执行身份验证,这为您提供了很多控制.或者,您可以使用控制器基类并覆盖OnAuthorization方法. API不应提供密码质询:在Web应用程序中,未经授权的请求通常会将用户重定向到登录页面.在API中,请求将仅返回错误代码.现在,客户端应用程序的工作是通过对话框挑战用户(如果适用).在移动应用中,您可能希望显示一个对话框.在具有OAuth的Web应用程序中,您可能希望重定向到身份验证服务器. 如果你想测试你的REST API,我建议你使用REST Console for Google Chrome和cURL.前者对初学者来说更容易,并且有一个很好的GUI,而cURL可以提供更高的保真度和更多的协议. 编辑 一个有点迂腐的说明:一些API,甚至是相当大的提供商的API,例如Twitter,不时返回401状态代码,通常省略(强制性)WWW-Authenticate标头,因为他们不打算挑战客户端. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在WebAPI中获取POST数据?
- asp.net-mvc – Durandal和ASP.NET MVC约定
- .net – Umbraco vs DotNetNuke:无法决定哪一个更合适
- asp.net – 如何在没有文件扩展名的情况下制作ASPX网页?
- 加速ASP.NET开发
- asp.net-mvc-3 – 自定义RazorViewEngine会出现页面错误
- asp.net-mvc – 从Asp.Net Mvc应用程序找不到DataContractJ
- asp.net-mvc – 属性级验证错误阻碍了类级验证的验证
- 从asp.net c#设置style.display
- .net – 如何使用viewmodel绑定选择列表?
- asp.net – 使用Razor有点像回到经典的asp
- FormsAuthenticationModule使用ASP.NET MVC验证事
- ASP.NET 4.0中HTML编码的<%:%>括号
- 经典asp JScript中的重载函数
- iis-7 – 经典ASP发送错误到浏览器不能在IIS7上进
- ASP.NET解决方案与类库项目
- asp.net-mvc-2 – 为MVC2 AsyncControllers构建单
- asp.net-mvc-3 – ASP.NET MVC 3/4是否有任何响应
- asp.net-web-api – 什么将WCF Web API中的HttpO
- asp.net – 如何从浏览器历史记录中删除页面?