iOS 网络开发(五)认证和授权的一些基本理解

原创Blog,转载请注明出处
blog.csdn.net/hello_hwc


前言:可能在公司工作时间长了,以至于iOS都习惯性的写成了IOS,既然上一篇文章里一同学提出来了,我就改过来吧。本文介绍下服务器认证的流程,我对于服务器端的了解很少,所以如果有不准确的地方,欢迎指正,我会及时进行修改。


认证和授权

简单来说就是服务器上存储了很多资源,这些资源不是客户端都能访问的,客户端要访问资源的时候,要先让服务器知道,这些资源我可以访问,这就是一个认证和授权的过程。


私有平台(供自己的App使用的服务器)的认证方式

静态用户名密码

注意:具体情况和服务器端的设计有关系,并不是所有的都是这样的

  1. App用户名密码登录,然后把用户名密码发送给服务器,密码一般做加密处理.
  2. 服务器解密密码,然后进行认证,认证成功后,返回一个Session的ID和token,Session具有有效期
  3. App进行API请求的时候,会把SessionId发送给服务器,Session过期后,App自动用token获取新的Session。

动态密码

常见的是发动到手机上的动态密码。


BTY:

验证码

当服务器发现客户端登录异常的时候,会给App发送一张图片作为验证码。


开放平台的(供第三方应用访问)认证方式

常见两种方式

Http Basic Authorization

简单来说就是每次API请求都需要包括用户名密码,用户名密码作为http header的一行。
IOS的代码也比较简单

注意如下代码仅仅是加了一个授权的Header,如果要正常使用,通常还需要其他的header

   NSString *username = @"";
    NSString *password = @"";
    NSMutableURLRequest * request = nil;
    NSString *basicAuthStr = [NSString stringWithFormat:@"%@:%@",username,password];
    NSData * basicAuthData = [basicAuthStr dataUsingEncoding:NSASCIIStringEncoding];
    NSString * basicAuthValue = [NSString stringWithFormat:@"Basic %@",[basicAuthData base64EncodedDataWithOptions:0]];
    [request setValue:basicAuthValue forHTTPHeaderField:@"Authorization"];

OAuth 2

主要包括四个部分

  • RO(resource onwer)资源所有者,对资源又授权能力的人。
  • RS (resource sever) 资源服务器,实际存储资源的设备
  • Client 第三方应用,在RO授权后,就可以访问对应的资源
  • AS (authorization server) 授权服务器,对访问者进行身份认证,为RO提供授权审批流程,最终颁发Access Token给访问者。Access Token具有实效。

大概的流程是这样的

  1. Client请求资源所有者要访问RO某些资源
  2. RO返回给Client一些临时token,让Client通过AS进行授权
  3. Client通过RO返回的东西,到AS进行授权
  4. AS授权成功后给Client返回Acccess Token
  5. 第三方应用拿着Access Token访问服务器
  6. 服务器验证Access Token,如果没有被伪造,时间没有过期,则返回给Cilent对应的资源,或者执行相关的操作。

以新浪微博的OAuth 2为例
第三方应用要访问新浪微博为例

  1. App向微博的RO提供APP KEY(应用唯一标示)和APP secret(应用秘钥),这些可提前在微博上申请
  2. 微博RO验证App身份后,提供RO一个临时OAuth_token(授权token)
  3. App携带临时OAuth_token到AS的授权链接上进行授权(本地的微博应用或者是webview)
  4. 用户输入用户名密码,并且同意授权,然后AS返回Access Token
  5. App拿着Access Token就可以进行相关的Http操作,例如分享微博等。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。