iOS网络请求认证挑战
一、引言
Http請求中認(rèn)證挑戰(zhàn)相關(guān)的代理如下:
1.將要發(fā)送一個認(rèn)證挑戰(zhàn)的請求
- connection:willSendRequestForAuthenticationChallenge:2.是否能夠?qū)σ粋€保護(hù)空間進(jìn)行認(rèn)證(已廢棄)- connection:canAuthenticateAgainstProtectionSpace:3.收到一個請求的認(rèn)證挑戰(zhàn)
- connection:didReceiveAuthenticationChallenge:(已廢棄) - URLSession:didReceiveChallenge:completionHandler: 4.一個請求的認(rèn)證挑戰(zhàn)被取消(已廢棄)
- connection:didCancelAuthenticationChallenge: 5.請求認(rèn)證相關(guān)的憑據(jù)是否使用存儲
- connectionShouldUseCredentialStorage: 剛看到這些代理方法的時候感覺不知道在做什么,具體應(yīng)該怎么處理這些代理方法呢?
下面我們來看看認(rèn)證挑戰(zhàn)的相關(guān)的類有哪些。
1.URL認(rèn)證挑戰(zhàn)類:NSURLAuthenticationChallenge;
2.URL保護(hù)空間類:NSURLProtectionSpace;
3.URL憑證類:NSURLCredential;
4.URL憑證存儲類:NSURLCredentialStorage;
5.URL認(rèn)證挑戰(zhàn)發(fā)射器:NSURLAuthenticationChallengeSender;
這幾個類之間的關(guān)系以及處理過程如下圖:
三、URL認(rèn)證挑戰(zhàn)類相關(guān)屬性
1.保護(hù)空間:NSURLProtectionSpace *protectionSpace。
2.默認(rèn)憑證(存儲的或者URL自帶的):NSURLCredential *proposedCredential。
3.之前認(rèn)證失敗次數(shù):NSInteger previousFailureCount。
4.認(rèn)證失敗響應(yīng)對象:NSURLResponse *failureResponse。
5.認(rèn)證失敗錯誤對象:NSError *error;。
6.認(rèn)證挑戰(zhàn)發(fā)射器,負(fù)責(zé)將憑據(jù)和相關(guān)操作推送到服務(wù)器:id<NSURLAuthenticationChallengeSender> sender。
四、URL保護(hù)空間類相關(guān)屬性
1.領(lǐng)域、范圍,此屬性只針對Basic認(rèn)證方式:NSString *realm。
2.憑證的發(fā)送是否使用安全保護(hù):BOOL receivesCredentialSecurely。
3.此認(rèn)證保護(hù)空間是否對應(yīng)一個代理服務(wù)器:BOOL isProxy。
4.保護(hù)空間代理類型,如Http代理、socket代理等:NSString *proxyType。
5.主機(jī)、端口、協(xié)議:host、port、protocol。
6.鑒定方法,即此次認(rèn)證使用的認(rèn)證方式:NSString *authenticationMethod。
有如下幾種認(rèn)證方法:
默認(rèn):NSURLAuthenticationMethodDefault。
HttpBasic:NSURLAuthenticationMethodHTTPBasic。
HTTPDigest(摘要):NSURLAuthenticationMethodHTTPDigest。
HTMLForm:NSURLAuthenticationMethodHTMLForm。
Negotiate(協(xié)商,Kerberos or NTLM):NSURLAuthenticationMethodNegotiate。
NTLM(WindowsNT使用的認(rèn)證方式):NSURLAuthenticationMethodNTLM。
ClientCertificate(客戶端證書):NSURLAuthenticationMethodClientCertificate。
ServerTrust(服務(wù)器信任機(jī)制):NSURLAuthenticationMethodServerTrust。
7.客戶端認(rèn)證所能接受的證書列表,只讀,此數(shù)組能夠用來構(gòu)建認(rèn)證憑證:NSArray<NSData *> *distinguishedNames。
8.服務(wù)器信任對象,只讀,此對象能夠用來構(gòu)建認(rèn)證憑證:SecTrustRef serverTrust。
五、URL憑證類
1.憑證類型,每種類型分別提供了構(gòu)造方法:(1)用戶名密碼憑證
(2)客戶端證書憑證
(3)服務(wù)器信任憑證
2.憑證持久化策略:
(1)不保存,用完失效:NSURLCredentialPersistenceNone。
(2)在本次會話內(nèi)生效:NSURLCredentialPersistenceForSession。
(3)本地持久保存;NSURLCredentialPersistencePermanent。
(4)iCloud共享同步保存:NSURLCredentialPersistenceSynchronizable。
六、URL憑證存儲類
1.提供對憑證的存儲、刪除、查詢功能;
2.憑證存儲狀態(tài)變更通知:NSURLCredentialStorageChangedNotification。
七、URL認(rèn)證挑戰(zhàn)發(fā)送器相關(guān)方法
1.對一個認(rèn)證挑戰(zhàn)對象使用生成的認(rèn)證憑證:
- useCredential:forAuthenticationChallenge: 2.對一個認(rèn)證挑戰(zhàn)對象不使用憑據(jù),然后繼續(xù)。此調(diào)用會因?yàn)轫憫?yīng)數(shù)據(jù)中返回響應(yīng)錯誤碼:- continueWithoutCredentialForAuthenticationChallenge: 3.對一個認(rèn)證挑戰(zhàn)取消認(rèn)證操作,此調(diào)用會是請求直接報錯,錯誤代理方法會觸發(fā):
- cancelAuthenticationChallenge: 4.對一個認(rèn)證挑戰(zhàn)對象采用系統(tǒng)默認(rèn)處理:
- performDefaultHandlingForAuthenticationChallenge: 5.拒絕一個認(rèn)證挑戰(zhàn)的保護(hù)空間并繼續(xù):
- rejectProtectionSpaceAndContinueWithChallenge:
總結(jié)
以上是生活随笔為你收集整理的iOS网络请求认证挑战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xcode中的-ObjC和-all_lo
- 下一篇: Objective-C复制解析