[iOS-Foundation] Networking Authentication
WWW-Authenticate
를 통해 클라이언트의 신분을 검증할 수 있다.URL Loading System을 사용하여 네트워크 요청을 보낼 때 위의 경우 URLSession 객체의 에이전트URLSession:didReceiveChallenge:completionHandler:
또는 URLSession:task:didReceiveChallenge:completionHandler:
메서드가 호출됩니다.또한 SSL/TLS 프로토콜에서는 클라이언트가 악수 단계에서 서버 인증서를 검증할 때 상기 프록시 방법을 호출합니다.프록시 방법 중의 매개 변수challenge는
NSURLAuthenticationChallenge
대상으로 이 종류는 검증을 요청하는 정보를 봉인합니다.따라서 일반적인 상황에서 응용은 이 유형의 대상을 스스로 만들 필요가 없고 사용자 정의 프로토콜을 사용할 때만 주동적으로 만들어야 할 수 있다.NSURLAuthenticationChallenge
NSURLAuthenticationChallenge 클래스에서 가장 중요한 속성은
protectionSpace
입니다. 이 속성은 NSURLProtectionSpace의 실례입니다. 하나NSURLProtectionSpace
의 대상은 속성host
, isProxy
, port
, protocol
, proxyType
과 realm
을 통해 검증을 요청한 서버 측의 범위를 대표합니다.NSURLProtectionSpace
류의 authenticationMethod
속성은 서비스 측의 검증 방식을 가리키며 가능한 값은NSURLAuthenticationMethodDefault
// HTTP , NSURLCredential 。
NSURLAuthenticationMethodHTTPBasic
// HTTP , , NSURLCredential 。
NSURLAuthenticationMethodHTTPDigest
// URL Loading System, web 。
NSURLAuthenticationMethodHTMLForm
NSURLAuthenticationMethodNegotiate
NSURLAuthenticationMethodNTLM
//
NSURLAuthenticationMethodClientCertificate
//
NSURLAuthenticationMethodServerTrust
protectionSpace
외에도 NSURLAuthenticationChallenge
에는 다음과 같은 속성이 포함됩니다.proposedCredential
, 이름에서 알 수 있듯이 추천하는 인증서는 이 속성이 NSURLCredential
대상이라는 것을 설명한다.protectionSpace
에 근거하여 [NSURLCredentialStorage sharedCredentialStorage]
에서 얻은 것일 수 있습니다.이전에 검증에 실패한 인증서일 수도 있습니다.클라이언트가 서비스 측이 제공한 인증서를 검증하려면 이 속성은 서버가 제공한 인증서를 대표합니다.failureResponse
, 지난번 검증에 실패한 NSURLResponse
대상을 가리킨다.previousFailureCount
, 이전에 검증에 실패한 횟수.sender
, 실현NSURLAuthenticationChallengeSender
프로토콜의 대상은 일반적으로 NSURLProtocol
의 실례이다. 구버전NSURLConnection
과NSURLDownload
에서 프록시 방법은completionHandler 파라미터를 제공하지 않고 NSURLAuthenticationChallengeSender
프로토콜 정의를 호출하는 관련 방법이 필요하다.error
, 지난번 검증에 실패한 NSError
대상을 가리킨다.NSURLSessionAuthChallengeDisposition
NSURLSession
의 에이전트 방법에서 상응하는 논리를 실행한 후 에이전트 방법의 block 매개 변수completionHandler를 호출하여 시스템이 검증을 어떻게 처리하는지 알려야 한다.이 블록은 두 개의 매개 변수, NSURLSessionAuthChallengeDisposition
유형의disposition을 전송해야 하며, 처리 방식을 설명하고, 다른 매개 변수는 대응하는 NSURLCredential
대상이다.NSURLSessionAuthChallengeDisposition
가능한 값은 다음과 같습니다.// credential
NSURLSessionAuthChallengeUseCredential
// , , credential
NSURLSessionAuthChallengePerformDefaultHandling
// protectionSpace , credential
NSURLSessionAuthChallengeRejectProtectionSpace
// , credential
NSURLSessionAuthChallengeCancelAuthenticationChallenge
NSURLCredential
disposition 값이
NSURLSessionAuthChallengeUseCredential
이면 NSURLCredential 객체를 제공해야 합니다.세 가지 유형의 Credential을 만들 수 있습니다.// protectionSpace authenticationMethod NSURLAuthenticationMethodHTTPBasic NSURLAuthenticationMethodHTTPDigest
+ credentialWithUser:password:persistence:
- initWithUser:password:persistence:
// protectionSpace authenticationMethod NSURLAuthenticationMethodClientCertificate
+ credentialWithIdentity:certificates:persistence:
- initWithIdentity:certificates:persistence:
// protectionSpace authenticationMethod NSURLAuthenticationMethodServerTrust
+ credentialForTrust:
- initWithTrust:
또한 NSURLCredentialStorage를 통해 관리할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.