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操作,例如分享微博等。

时间: 2024-10-09 23:33:52

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

IOS网络开发NSURLSession详解(一)概述

原创blog,转载请注明出处blog.csdn.net/hello_hwc 我的IOS-SDK详解专栏,欢迎关注 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言: 这个IOS网络编程的系列计划6篇文章,NSURLSession3篇(一篇概述,一篇详细阐述三种task和delegate的使用,一篇阐述授权,证书等内容),网络的基础知识两篇(一篇REST API讲解已经写完了,一篇我会把写博客的过程中遇到的概念总结出来

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈开发企业级认证与授权网盘地址:https://pan.baidu.com/s/1mj8u6JQ 密码: 92rp备用地址(腾讯微云):https://share.weiyun.com/8b2ffc1839069b4399950333860754a4 密码:a539tn 第1章 课程导学介绍课程内容.课程特点,使用的主要技术栈,以及学习课程所需的前置知识 第2章 开始开发安装开发工具,介绍项目代码结构并搭建,基本的依赖和参数设置,开发hello world 第3

iOS网络开发(1)写代码前需要了解的

从本篇文章开始,介绍一些网络开发中用到的技术. iOS的网络开发中,特别是应用开发,使用Http协议作为主要的通信手段 写代码前,先了解一些与协议相关联的内容,包括: URL的概念 HTTP与HTTPS HTTP请求的内容及请求对象 HTTP应答的内容及请求对象 URL URL:统一资源标示符,可以表示一个资源的路径,这个路径可以是本地的.网络上的. URL是对可以从互联网上得到的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址. 互联网上每一个文件都有唯一一个URL,它包含的信息指出文

IOS网络开发概述

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理

ios网络开发

概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力的.今天就会给大家介绍这部分内容: Web请求和响应 使用代理方法 简化请求方法 图片缓存 扩展--文件分段下载 扩展--文件上传 NSURLSession 数据请求 文件上传 文件下载 会话 UIWebView 浏览器实现 UIWebView与页面交互 网络状态 目 录 Web请求和响应 使用代理

IOS 网络开发NSURLSession(四)UploadTask(上传数据+图片)

原创blog,转载请注明出处 blog.csdn.net/hello_hwc 前言: UploadTask继承自DataTask.不难理解,因为UploadTask只不过在Http请求的时候,把数据放到Http Body中.所以,用UploadTask来做的事情,通常直接用DataTask也可以实现.不过,能使用封装好的API会省去很多事情,何乐而不为呢? Demo下载链接 http://download.csdn.net/detail/hello_hwc/8557791 Demo里包括了三种T

IOS网络开发实战(二)

1 飞机航班查询软件 1.1 问题 NSURLConnection是IOS提供的用于处理Http协议的网络请求的类,可以实现同步请求也可以实现异步请求,本案例使用NSURLConnection类实现一个飞机航班查询的工具软件,采用GET的同步请求方式访问网络数据,如图-1所示: 图-1 1.2 方案 首先创建一个SingleViewApplication应用,在Storyboard文件中搭建查询界面,上方的三个Textfield控件分别用于接受用户输入的出发城市.到达城市和触发日期,界面中间有一

ios网络开发 AFNetworking

一.早前的几个网络框架 1.ASI框架: HTTP终结者.很牛, 但是有BUG, 已经停止更新. 2.MKNetworkKit (印度人写的). 3.AFN一直还在更新. AFNetworking的出现:MAC/iOS设计的一套网络框架.(为了简化网络操作) 地址:https://github.com/AFNetworking/AFNetworking *AFN专注与网络数据传输,以及网络中多线程的处理. 二.AFNetworking的使用 1.AFN特性 : *登录传参数时,传递字典即可.(键

IOS网络开发(二)

1 局域网群聊软件 1.1 问题 UDP协议将独立的数据包从一台计算机传输到另外一台计算机,但是并不保证接受方能够接收到该数据包,也不保证接收方所接收到的数据和发送方所发送的数据在内容和顺序上是完全一致的. UDP广播就是建立于UDP协议上的数据传输,当网络中的某一台计算机向交换机或路由发送一个广播数据时,交换机或路由则会将此广播数据发送到其节点下的所有接收者.本案例使用第三方Socket编程框架AsyncUdpSocket框架,基于UDP广播实现一个局域网群聊软件,一个基于UD广播的聊天室程序