iOS网络请求认证挑战

一、引言

Http请求中认证挑战相关的代理如下:

1.将要发送一个认证挑战的请求

- connection:willSendRequestForAuthenticationChallenge:
2.是否能够对一个保护空间进行认证(已废弃)
- connection:canAuthenticateAgainstProtectionSpace:
3.收到一个请求的认证挑战
- connection:didReceiveAuthenticationChallenge:(已废弃)
- URLSession:didReceiveChallenge:completionHandler:
4.一个请求的认证挑战被取消(已废弃)
- connection:didCancelAuthenticationChallenge:
5.请求认证相关的凭据是否使用存储
- connectionShouldUseCredentialStorage:
刚看到这些代理方法的时候感觉不知道在做什么,具体应该怎么处理这些代理方法呢?

下面我们来看看认证挑战的相关的类有哪些。


二、网络请求认证挑战相关的类

1.URL认证挑战类:NSURLAuthenticationChallenge;

2.URL保护空间类:NSURLProtectionSpace;

3.URL凭证类:NSURLCredential;

4.URL凭证存储类:NSURLCredentialStorage;

5.URL认证挑战发射器:NSURLAuthenticationChallengeSender;

这几个类之间的关系以及处理过程如下图:



三、URL认证挑战类相关属性

1.保护空间:NSURLProtectionSpace *protectionSpace

2.默认凭证(存储的或者URL自带的):NSURLCredential *proposedCredential

3.之前认证失败次数:NSInteger previousFailureCount

4.认证失败响应对象:NSURLResponse *failureResponse

5.认证失败错误对象:NSError *error;

6.认证挑战发射器,负责将凭据和相关操作推送到服务器:id<NSURLAuthenticationChallengeSender> sender


四、URL保护空间类相关属性

1.领域、范围,此属性只针对Basic认证方式:NSString *realm

2.凭证的发送是否使用安全保护:BOOL receivesCredentialSecurely

3.此认证保护空间是否对应一个代理服务器:BOOL isProxy

4.保护空间代理类型,如Http代理、socket代理等:NSString *proxyType

5.主机、端口、协议:host、port、protocol

6.鉴定方法,即此次认证使用的认证方式:NSString *authenticationMethod

有如下几种认证方法:

默认:NSURLAuthenticationMethodDefault

HttpBasic:NSURLAuthenticationMethodHTTPBasic

HTTPDigest(摘要):NSURLAuthenticationMethodHTTPDigest

HTMLForm:NSURLAuthenticationMethodHTMLForm

Negotiate(协商,Kerberos or NTLM):NSURLAuthenticationMethodNegotiate

NTLM(WindowsNT使用的认证方式):NSURLAuthenticationMethodNTLM

ClientCertificate(客户端证书):NSURLAuthenticationMethodClientCertificate

ServerTrust(服务器信任机制):NSURLAuthenticationMethodServerTrust

7.客户端认证所能接受的证书列表,只读,此数组能够用来构建认证凭证:NSArray<NSData *> *distinguishedNames

8.服务器信任对象,只读,此对象能够用来构建认证凭证:SecTrustRef serverTrust


五、URL凭证类

1.凭证类型,每种类型分别提供了构造方法:

(1)用户名密码凭证

(2)客户端证书凭证

(3)服务器信任凭证

2.凭证持久化策略:

(1)不保存,用完失效:NSURLCredentialPersistenceNone

(2)在本次会话内生效:NSURLCredentialPersistenceForSession

(3)本地持久保存;NSURLCredentialPersistencePermanent

(4)iCloud共享同步保存:NSURLCredentialPersistenceSynchronizable


六、URL凭证存储类

1.提供对凭证的存储、删除、查询功能;

2.凭证存储状态变更通知:NSURLCredentialStorageChangedNotification


七、URL认证挑战发送器相关方法

1.对一个认证挑战对象使用生成的认证凭证:

- useCredential:forAuthenticationChallenge:
2.对一个认证挑战对象不使用凭据,然后继续。此调用会因为响应数据中返回响应错误码:
- continueWithoutCredentialForAuthenticationChallenge:
3.对一个认证挑战取消认证操作,此调用会是请求直接报错,错误代理方法会触发:
- cancelAuthenticationChallenge:
4.对一个认证挑战对象采用系统默认处理:
- performDefaultHandlingForAuthenticationChallenge:
5.拒绝一个认证挑战的保护空间并继续:
- rejectProtectionSpaceAndContinueWithChallenge:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CDN的实现原理

一、传统模式 在描述CDN的实现原理前&#xff0c;让我们先看传统的未加缓存服务的访问过程&#xff0c;以便了解CDN缓存访问方式与未加缓存访问方式的差别&#xff1a; 用户提交域名→浏览器对域名进行解释→得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复…

一个简单的权限系统模型

我们知道&#xff0c;一般说的简单的权限系统&#xff0c;都是使用shiro或者spring-security shiro之前用的比较多&#xff0c;原理也容易理解&#xff0c;算是比较成熟的权限方面的框架spring-security相对源码比较难懂&#xff0c;但由于与spring的完美融合&#xff0c;也有…

获取iOS任意线程调用堆栈(一)获取任意线程的调用栈地址列表

转载自&#xff1a;http://blog.csdn.net/jasonblog/article/details/49909163 如果要获取当前线程的调用栈&#xff0c;可以直接使用现有API&#xff1a;[NSThread callStackSymbols]。 但是并没有相关API支持获取任意线程的调用栈&#xff0c;所以只能自己编码实现。 1. 基础…

获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构

我们知道Windows下的文件都是PE文件&#xff0c;同样在OS X和iOS中可执行文件是Mach-o格式的。 所以我们如果要进行逆向分析&#xff0c;首先要熟悉Mach-o文件结构。 Mach-o包含三个基本区域&#xff1a; 头部&#xff08;header structure&#xff09;。 加载命令&#xff08;…

获取iOS任意线程调用堆栈(三)符号化理论:从Mach-o结构分析类名方法名

下面来讲讲如何从Mach-o文件中分析出类名和方法名&#xff0c;也让我们了解下class-dump的原理。 Mach-o结构有两个节&#xff1a;__objc_classname 和 __objc_methname 其中就是类名和方法名。 其中__objc_classname的偏移为&#xff1a;ox7961 __objc_methname的偏移为0x6…

获取iOS任意线程调用堆栈(四)符号化实战

转载自&#xff1a;http://blog.csdn.net/jasonblog/article/details/49909209 1. 相关API和数据结构 由于我们在上面回溯线程调用栈拿到的是一组地址&#xff0c;所以这里进行符号化的输入输出应该分别是地址和符号&#xff0c;接口设计类似如下&#xff1a; - (NSString *)s…

获取iOS任意线程调用堆栈(五)完整实现:BSBacktraceLogger

转载自&#xff1a;https://toutiao.io/posts/aveig6/preview BSBacktraceLogger 是一个轻量级的框架&#xff0c;可以获取任意线程的调用栈&#xff0c;开源在我的 GitHub&#xff0c;建议下载下来结合本文阅读。 我们知道 NSThread 有一个类方法 callstackSymbols 可以获取调…

Mac电脑如何彻底删除清除数据?CleanMyMac X软件更专业

虽然不用杀毒&#xff0c;但是日常的清理还是有必要的&#xff0c;特别是卸载一些软件会有残留&#xff0c;可以用命令mdfind来找&#xff0c;然后删&#xff0c;这里给新手用户推荐一款应用clean my mac x&#xff0c;定期清理一下&#xff0c;不用的时候关掉就可以。 CleanM…

Git的思想和基本工作原理

转载自&#xff1a;http://www.nowamagic.net/academy/detail/48160210# 在开始学习 Git 的时候&#xff0c;请不要尝试把各种概念和其他版本控制系统&#xff08;诸如 Subversion 和 Perforce 等&#xff09;相比拟&#xff0c;否则容易混淆每个操作的实际意义。Git 在保存和处…

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

本文转自&#xff1a;http://www.aboutyun.com/thread-9341-1-1.html一、入门1、简介Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性&#xff0c;但是在设计实现上完全不同&#xff0c;此外它并不是JMS规范的实现。kafka对消息保存…

深入理解Hadoop集群和网络

云计算和Hadoop中网络是讨论得相对比较少的领域。本文原文由Dell企业技术专家Brad Hedlund撰写&#xff0c;他曾在思科工作多年&#xff0c;专长是数据中心、云网络等。文章素材基于作者自己的研究、实验和Cloudera的培训资料。 本文将着重于讨论Hadoop集群的体系结构和方法&am…

iOS中WebKit框架应用与解析

一、引言 在iOS8之前&#xff0c;在应用中嵌入网页通常需要使用UIWebView这样一个类&#xff0c;这个类通过URL或者HTML文件来加载网页视图&#xff0c;功能十分有限&#xff0c;只能作为辅助嵌入原生应用程序中。虽然UIWebView也可以做原生与JavaScript交互的相关处理&#xf…

六、区块链主流共识算法浅析

转自&#xff1a;http://www.cocoachina.com/cms/wap.php?actionarticle&id22240。 一、概述&#xff1a; 1.工作量证明&#xff08;Proof of Work&#xff09;&#xff1a; 通过所有节点的工作量竞争来达成一致。竞争的是运算力。 2.权益证明&#xff08;Proof of S…

七、区块链如何运用merkle tree验证交易真实性

转载自&#xff1a;https://www.tangshuang.net/4117.html 本文假设你已经知道区块链中merkle tree的原理&#xff0c;现在搞明白具体怎么来实现交易真实性验证。 Merkle Tree 这个小节简述一下merkle的原理。简单说&#xff0c;merkle tree就是一个hash二叉树&#xff0c;父…

java基础 --- Arrays.asList():返回指定数组支持的固定大小列表

Arrays.asList()&#xff1a;返回指定数组支持的固定大小列表 首先看下这个方法的源码注释&#xff0c;注意第一句&#xff0c;Returns a fixed-size list backed by the specified array.&#xff0c; 意思就是&#xff1a;返回指定数组支持的固定大小列表 所以&#xff1a;…

Notepad++中的UTF-8无BOM格式编码

Notepad中&#xff0c;关于utf-8的编码格式&#xff0c;有两种&#xff1a;以UTF-8无BOM格式编码和以UTF-8格式编码。 很容易给人一种错觉&#xff0c;第一反应会选择以UTF-8格式编码&#xff0c;感觉这种就是平时所说的UTF-8&#xff0c;然而这种编码是默认带BOM的&#xff0…

Java 线程状态---WAITING(部分转载)

看到一篇关于写线程waiting状态的文章&#xff0c;感觉很生动有趣&#xff0c;转过来保存下。 总结&#xff1a; waiting这个状态&#xff0c;就是等待&#xff0c;明确了等待&#xff0c;就不会抢资源了。 一个线程A在拿到锁但不满足执行条件的时候&#xff0c;需要另一个线…

服务端高并发分布式架构演进之路(转载,图画的好)

这个文章基本上从单机版到最终版&#xff0c;经历了加缓存&#xff0c;加机器&#xff0c;高可用&#xff0c;分布式&#xff0c;最后到云等过程&#xff0c;其实我一直想总结一套类似的东西&#xff0c;没想到有人已经先弄出来了&#xff0c;那就不重复造轮子了&#xff0c;而…

限流算法(漏桶算法、令牌桶算法)对比

限流算法&#xff08;漏桶算法、令牌桶算法&#xff09; 漏桶算法&#xff1a; 有个桶&#xff0c;比如最大能进2个单位的水&#xff08;请求&#xff09;&#xff0c;桶底有个洞&#xff0c;每个单位的水都会在桶里待3秒后漏下去。 那么这个桶就可以同时处理2个单位的水。 如…

mongodb 索引详解

使用springboot连接mongodb的时候&#xff0c;涉及到索引的使用 举例&#xff1a; Document(collection"book") //注释的是复合索引 //CompoundIndexes( // { // CompoundIndex(name "复合索引名字",def "{字段01:1,字段02:…