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,一经查实,立即删除!

相关文章

大数据相关整理

1.hdfs 1.1.namenode 所有文件的读写入口&#xff0c;用来保存文件的元信息 元信息包括&#xff1a; fsimage文件&#xff1a;文件权限信息文件在block块的偏移量文件的位置信息 editlogs文件&#xff1a;对文件的写操作日志文件写日志指令&#xff0c;为了安全同步&#xf…

OC编码规范

一、命名规范 1.类: (1)首字母大写&#xff0c;后续单词首字母大写。 (2)类名末尾要包含此类的类型&#xff0c;比如RootView&#xff0c;RootViewController。 2.属性 (1)属性名称首字母小写&#xff0c;后续首字母大写; (2)使用property&#xff0c;要保持必要的空格&#xf…

数据库---mysql的索引和引擎

mysql 的索引和引擎 mysql的数据都是存放在磁盘上的&#xff0c;都说索引会使查询变快&#xff0c;那么肯定是索引用了特殊的数据结构。 常见的数据结构有&#xff1a; hash hash就是咱们在hashMap中的那个hash&#xff0c;用hash确实快&#xff0c;而且时间复杂度是O&#x…

SQLite内置表SQLITE_MASTER

一、概述1.SQLite数据库中有一个内置表&#xff0c;名为SQLITE_MASTER&#xff0c;此表中存储着当前数据库中所有表的相关信息&#xff0c;比如表的名称、用于创建此表的sql语句、索引、索引所属的表、创建索引的sql语句等。2.SQLITE_MASTER表示只读的&#xff0c;只能对他进行…

redis单线程为什么还快的个人解释

面试的时候&#xff0c; 面试官问&#xff0c;redis是单线程还是多线程 答&#xff1a;单线程 面试官再问&#xff0c;单线程&#xff0c;为什么还快呢&#xff1f;不应该是多线程才更快吗&#xff1f;那这是不是有什么矛盾啊&#xff1f; 答&#xff1a;啊&#xff1f;&#x…

CDN的实现原理

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

数据库---事务的隔离级别

首先&#xff0c;我们下面说的数据库事务&#xff0c;都是使用INNODB引擎的结果。 MYISAM是没有事务的&#xff0c;也就没有下面这些说法。 1.数据库事务的四大特性&#xff1a; 原子性&#xff1a;事务包含的所有数据库操作要么全部成功&#xff0c;要不全部失败回滚一致性&…

iOS崩溃日志收集

一、概述iOS-App崩溃分为两种&#xff0c;一种是异常&#xff1a;NSException&#xff0c;一种是信号&#xff1a;Signal。二、异常崩溃1.NSException对象(1)reason&#xff1a;崩溃原因。(2)callStackSymbols&#xff1a;调用堆栈。(3)name&#xff1a;崩溃名称(4)userInfo&am…

统计iOS项目代码行数

打开终端&#xff0c;输入如下命令&#xff1a;find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" | xargs wc -l 此命令会迭代子目录&#xff0c;会统计每个源代码文件行数及总数&#xff0c;统计的行数包含空…

一个简单的权限系统模型

我们知道&#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. 基础…

linux---基础01

Linux是一种自由和开放源码的操作系统&#xff0c;存在着许多不同的Linux版本&#xff0c;但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中&#xff0c;比如手机、平板电脑、路由器、台式计算机 Linux的目录结构 bin (binaries)存放二进制可执行文件 boot 存放用…

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

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

linux---基础02

二、用户、组管理命令 Linux采用组来组织和管理用户 在Linux中每个用户有唯一的用户标识符UID&#xff0c;该UID是一个无符号整数。 同时每个用户也必须至少属于一个组&#xff0c;也有组标识符GID。 其中UID与GID独立编号。 1. groupadd命令 &#xff08;1&#xff09;grou…

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

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

linux---基础03

三、 文件属性操作命令 1. chown命令 &#xff08;1&#xff09;chown示例一&#xff1a;改变文件的属主 [rootserver1 ~]# chown user1 hello.txt功能&#xff1a;将指定文件hello.txt的属主&#xff08;所有者&#xff09;改为user1。&#xff08;2&#xff09;chown示例…

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

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

linux---基础04

六、网卡配置 分配临时IP地址&#xff1a; ifconfig eth0 up // 启用eth0网卡ifconfig eth0 192.168.1.104 netmask 255.255.255.0静态分配IP地址&#xff1a; vi /etc/sysconfig/network-scripts/ifcfg-eth0service network restart //重启 network服务(重新加载网卡配置)动态…

记录---基于BigDecimal的特殊的四舍五入

机试问题—实现基于BigDecimal的特殊的四舍五入。 这是一道外企的机试题&#xff0c;我把里面的某个难点部分&#xff0c;摘出来详细如下&#xff1a; //实现特殊的四舍五入&#xff0c;先普通四舍五入取到小数点后两位&#xff0c;然后最后一位向后进位&#xff0c;0和5不变&…

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

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