iOS AFNetWorking下得Basic Auth认证请求方式
我新入职了一家公司,做了一个项目,服务器的大哥说他采用的是Basic Auth认证请求方式,一般我们用的都是OAuth的认证方式,下面我们就对比一下这两种认证方式
Basic Auth简单点说明就是每次请求API时都提供用户的username和password。
OAuth为用户资源的授权提供了一个安全、开放的标准,将会是以后开发平台普遍遵守的。它分为几个交互过程:
1)应用用APP KEY和APP SECRET换取OAuth_token;
2)应用将用户引导到服务商的页面对该OAuth_token进行授权(可能需要输入用户名和密码);
3)服务商的页面跳转回应用,应用再根据参数去服务商获得Access Token;
4)使用这个Access Token就可以访问API了。
然而两种的优缺点呢,百度百科也给出了比较详细的答案
Basic Auth优点:使用非常简单,开发和调试工作简单,没有复杂的页面跳转逻辑和交互过程;更利于发起方控制;
缺点:安全性低,每次都需要传递用户名和密码,用户名和密码很大程度上存在被监听盗取的可能;同时应用本地还需要保存用户名和密码,在应用本身的安全性来说,也存在很大问题;开放平台服务商出于自身安全性的考虑(第三方可以得到该服务商用户的账号密码,对于服务商来说是一种安全隐患),未来也会限制此认证方式(Twitter就计划在6月份停止Basic Auth的支持),用户如果更改了用户名和密码,还需要重新进行密码校验的过程。
OAuth的优点:安全性高,用户的账户和密码只需要提供一次,而且是在服务商的页面上提供,防止了Basic Auth反复传输密码带来的安全隐患;Access Token访问权限仅限于应用,被窃取不会影响用户在该服务商的其他服务;Access Token即使被监听丢失了随时可以撤销,不像密码丢失可能就被别人篡改了;用户修改了密码也不会影响该应用的正常使用。
两种方式的对比多余的就不说了,Basic Auth有关我们iOS程序的呢有一下几点:
我们每次都要上传username和password。也就是说我们每次都要记录用户的username和password,并且保证每次发送的密码必须都是正确的(像我们服务器大哥会给我们生成一个token,然后当做用户名传给他,这种应该算是两种方式都有使用吧,也就是说用户每次更新密码的时候我都要向存本地)
那么使用Basic Auth的代码是什么样子的呢:
AFNetWorking的代码如下:

我们点进这个方法里面去

链接:http://www.jianshu.com/p/22c4c4fc3481
iOS AFNetWorking下得Basic Auth认证请求方式的更多相关文章
- ios开发使用Basic Auth 认证方式
http://blog.csdn.net/joonchen111/article/details/48447813 我们app的开发通常有2种认证方式 一种是Basic Auth,一种是OAuth ...
- java 发送带Basic Auth认证的http post请求
构造http header private static final String URL = "url"; private static final String APP_KEY ...
- java 发送带Basic Auth认证的http post请求实例代码
构造http header private static final String URL = "url"; private static final String APP_KEY ...
- 精讲RestTemplate第9篇-如何通过HTTP Basic Auth认证
本文是精讲RestTemplate第9篇,前篇的blog访问地址如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层H ...
- Http basic Auth 认证方式帮助类
BasicAuthenticationUtil import java.io.IOException; import java.security.MessageDigest; import javax ...
- Etcd安全配置之Basic Auth认证
<中小团队落地配置中心详解>文章中我们介绍了如何基于Etcd+Confd构建配置中心,最后提到Etcd的安全问题时说了可以使用账号密码认证以达到安全访问的目的,究竟该如何开启认证以及怎么设 ...
- 第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)
一. 前言 前端调用有Form表单提交,ajax提交,ajax一般是用Jquery的简化写法,在这里不再过多介绍: 后端调用大约有这些:WebCient.WebRequest.Httpclient.W ...
- HTTP Basic auth认证
Basic 概述 Basic 认证是HTTP 中非常简单的认证方式,因为简单,所以不是很安全,不过仍然非常常用. 当一个客户端向一个需要认证的HTTP服务器进行数据请求时,如果之前没有认证过,HTTP ...
- httpclient进行basic auth认证
private HttpClientContext context = HttpClientContext.create(); public void addUserOAuth(String user ...
随机推荐
- KDiff
BeyondCompare是收费的,用了一段时间不能用了.找到一个 KDiff做对比工具,也很好用. 在这里下载: http://sourceforge.net/projects/kdiff3/fil ...
- mysql 批量数据循环插入
双重循环插入 DELIMITER ;; CREATE PROCEDURE test_insert() BEGIN DECLARE a INT DEFAULT 1; DECLARE b TINYINT ...
- installers PHPManager
=== Verbose logging started: // :: Build type: SHIP UNICODE 5.00.10011.00 Calling process: C:\Progra ...
- 了解JavaScript(1)- Hello World
JavaScript 简介 JavaScript 是一种可以给网页增加交互性的编程语言. 熟悉 JavaScript 的好方法是"站在其他程序员肩膀上",即Web 上有大量 Jav ...
- .Net 泛型约束
本文内容 使用泛型约束的原因 未绑定的类型参数 作为约束的类型参数 参考资料 当"设计模式"出现时,人们提"用接口编程":后来,有了泛型,人们提"用泛 ...
- Android Volley 库的使用
本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库的使用 参考资料 Android 关于网络操作一般都会介绍 HttpClient 以及 Ht ...
- Mybatis源码分析之Cache二级缓存原理 (五)
一:Cache类的介绍 讲解缓存之前我们需要先了解一下Cache接口以及实现MyBatis定义了一个org.apache.ibatis.cache.Cache接口作为其Cache提供者的SPI(Ser ...
- intel vt
EPT和VPID技术是内存虚拟化技术, 是页表扩充技术Extended Page Table (EPT) 的缩写, 是VT-x技术的一部分. 内存虚拟化的主要任务是实现地址空间的虚拟化,内存虚拟化是通 ...
- 忘记webogic管理控制台密码
cd /user_projects/domains/base_domain/security cp DefaultAuthenticatorInit.ldift DefaultAuthenticato ...
- js setTimeout setInterval 第三个参数说明
1.api setTimeout: https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setTimeout var timeoutID = ...