iOS网络请求认证挑战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jingcheng345413/article/details/65437649

一、引言

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:

猜你喜欢

转载自blog.csdn.net/jingcheng345413/article/details/65437649