来自IOS / Objective c的Sharepoint silverlightProfileService NTLM身份验证

时间:2014-04-16 05:10:18

标签: ios objective-c sharepoint asihttprequest ntlm

我正在尝试连接到sharepoint server / _vti_bin / SilverlightProfileService.json / GetUserSLProfileData服务,以获取有关组织中用户的详细信息。

我使用ASIHTTPRequest包从objective-c发送我的请求并且正在接收" ERROR Domain = ASIHTTPRequestErrorDomain Code = 3' Authentication Needed'""

我的要求代码:

NSURL *url = [NSURL URLWithString:@"http://aDOMAIN/_vti_bin/SilverlightProfileService.json/GetUserSLProfileData"];
NSString *jsonString = @"{\"AccountNames\": [\"intdev\\aUSER\" ]}";

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request appendPostData:[jsonString  dataUsingEncoding:NSUTF8StringEncoding]];
[request setRequestMethod:@"POST"];

[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request addRequestHeader:@"Expect" value:@"100-continue"];

[request setUsername:@"intdev\\aUSER"];
[request setPassword:@"P@ssw0rd1"];
[request setDomain:@"aDOMAIN"];

[request startSynchronous];
NSError *error = [request error];
if (!error) {
    NSString *response = [request responseString];
    NSLog(@"%@", response);
}
else{
    NSLog(@"%@", error);
}

我使用fiddler来检查它使用NTLM进行身份验证的请求,并且我正在使用正确的用户名/密码/域。

MY REQUEST

POST http://aDOMAIN/_vti_bin/SilverlightProfileService.json/GetUserSLProfileData HTTP/1.1
Host: aDOMAIN
Expect: 100-continue
Connection: keep-alive
Accept-Encoding: gzip
Content-Type: application/json
Content-Length: 36
Connection: keep-alive
Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAD0APQAWAAAAEAAQABMAQAAGgAaAIwBAAAmACYApgEAAAAAAAAAAAAABYIIAKndYKPN+sArlPt5qycejx+a89LCSC7UwM5wWr0Ld5T6ndjpxyZVBIcBAQAAAAAAABA+zhcnWc8BmvPSwkgu1MAAAAAAAgAMAEkATgBUAEQARQBWAAEAFABTAFAAMgAwADEAMwBQAE8AQwAxAAQAKABpAG4AdABkAGUAdgAuAEQAZQBwAHQARABlAHYALgBsAG8AYwBhAGwAAwA+AFMAUAAyADAAMQAzAFAATwBDADEALgBpAG4AdABkAGUAdgAuAEQAZQBwAHQARABlAHYALgBsAG8AYwBhAGwABQAaAEQAZQBwAHQARABlAHYALgBsAG8AYwBhAGwABwAIAFgVOakmWc8BAAAAAAAAAABTAFAAUABPAEMATQBZAFMASQBUAEUALgBJAE4AVABEAEUAVgAuAEQARQBQAFQARABFAFYALgBMAE8AQwBBAEwAaQBuAHQAZABlAHYAXABwADAAOAA4ADUAOQBMAGEAYwBoAGwAYQBuAHMALQBpAE0AYQBjAC4AbABvAGMAYQBsAA==
User-Agent: sharepoint 1.0 (iPhone Simulator; iPhone OS 7.1; en_US)

{"AccountNames": ["intdev\aUSER" ]}


MY RESPONSE

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Length: 0
SPRequestGuid: 2fad879c-7cc6-700e-0000-0223ed9d2abe
request-id: 2fad879c-7cc6-700e-0000-0223ed9d2abe
X-FRAME-OPTIONS: SAMEORIGIN
SPRequestDuration: 3
SPIisLatency: 2
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
WWW-Authenticate: NTLM
X-Content-Type-Options: nosniff
X-MS-InvokeApp: 1; RequireReadOnly
MicrosoftSharePointTeamServices: 15.0.0.4420
Date: Wed, 16 Apr 2014 03:48:09 GMT
Proxy-Support: Session-Based-Authentication

我很难过,我觉得好像我已经尝试了一切。任何帮助将不胜感激。

提前致谢, 拉克兰。

1 个答案:

答案 0 :(得分:0)

经过大量调查后,我重构了我的服务以使用AFNetworking。它能够自动处理所有身份验证。