NSURLSession didReceiveChallenge несколько сертификатов
Как я могу указать несколько сертификатов, в зависимости от сервера? в session:didReceiveChallenge
метод Я могу вернуть NSURLCredential, но я не нашел способа определить, с какого URL пришел запрос.
Я хочу сделать что-то вроде этого:
-(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler
{
// get the certificate depending on the url
NSString *certificatePath;
if ([url isEqualToString: @"server1.com"]) {
certificatePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/server1.p12"];
} else if ([url isEqualToString: @"server2.com"]) {
certificatePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/server2.p12"];
}
//... some certificate stuff
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity certificates:(__bridge NSArray*)certsArray persistence:NSURLCredentialPersistencePermanent];
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
}
1 ответ
Я наконец нашел ответ, вы можете получить хозяин NSURLAuthenticationChallenge
как это:
NSString* host = challenge.protectionSpace.host;
это оно