wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了针对IIS7和Windows 2008的iOS“didReceiveAuthenticationChallenge”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我在iOS编程中遇到了一些身份验证问题.我有一个代码在 Windows 2003上完美地对抗IIS6,但在带有IIS7的Windows Server 2008上不起作用.两台服务器上的安全选项相同(无匿名访问和“集成Windows身份验证”). 这是“didReceiveAuthenticationChALLENge”委托的代码: -(void)connection:(NSURLConnectio
我在iOS编程中遇到了一些身份验证问题.我有一个代码Windows 2003上完美地对抗IIS6,但在带有IIS7的Windows Server 2008上不起作用.两台服务器上的安全选项相同(无匿名访问和“集成Windows身份验证”).

这是“didReceiveAuthenticationChALLENge”委托的代码

-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChALLENge:
(NSURLAuthenticationChALLENge *)chALLENge 
{
//USE STORED CREDENTIALS
Credentials* cred = [[Credentials alloc] init];
NSString* userName = cred.userName;
NSString* pass = cred.pass;

NSString* authMethod = [[chALLENge protectionSpace] authenticationMethod];

//Kerberos (NegotiatE) needs "user@realm" as username
//NTLM Needs domain\\username
if ([authMethod isEqualToString:NSURLAuthenticationMethodNTLM]) {
    userName = [NSString StringWithFormat:@"%@%@",@"es\\",userName];
}
if ([authMethod isEqualToString:NSURLAuthenticationMethodNegotiate]) {
    userName = [NSString StringWithFormat:@"%@%@",userName,@"@subdomain.domain.com"];
}

NSLog(@"Auth method in use: %@",authMethod);
NSLog(@"User: %@",userName);
NSLog(@"Pass: %@",pass);

if ([chALLENge prevIoUsFailureCount] <= 1) {
    NSLog(@"received authentication chALLENge");
    NSURLCredential *credential;
    credential = [NSURLCredential 
                     credentialWithUser:userName 
                     password:pass
                     persistence:NSURLCredentialPersistenceForSession];        

    [[chALLENge sender] useCredential:credential forAuthenticationChALLENge:chALLENge];

}
else {
    NSLog(@"Authentication error");
    NSLog(@"Failed login with status code: %d",[(NShttpURLResponse*)[chALLENge failureResponse]statusCode]);
    [[chALLENge sender] cancelAuthenticationChALLENge:chALLENge];   
}

}

@L_675_7@

最后,我发现了错误…问题与Windows 2008 IIS7服务器上的身份验证方法有关.

使用“集成Windows身份验证”时,服务器可以使用NTLM或Kerberos.我的2008服务器总是使用kerberos,即使这些机器上没有配置Kerberos.

解决方案是编辑IIS Metabase以强制NTML身份验证.

大佬总结

以上是大佬教程为你收集整理的针对IIS7和Windows 2008的iOS“didReceiveAuthenticationChallenge”全部内容,希望文章能够帮你解决针对IIS7和Windows 2008的iOS“didReceiveAuthenticationChallenge”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。