[iOS-Foundation] Networking Authentication

3862 단어
HTTPS 요청을 보낼 때 악수 단계에서 서버는 클라이언트에게 신분을 증명하기 위한 인증서를 요구할 수 있습니다.또는 HTTP 프로토콜 층에서 서버는 응답 헤더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, proxyTyperealm을 통해 검증을 요청한 서버 측의 범위를 대표합니다.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의 실례이다. 구버전NSURLConnectionNSURLDownload에서 프록시 방법은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를 통해 관리할 수 있습니다.

    좋은 웹페이지 즐겨찾기