- 浏览: 447124 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- java (8)
- 求职&面试 (1)
- linux (33)
- windows (1)
- C++ (5)
- android (12)
- QT (1)
- 经验 (1)
- memory-leaks (1)
- Streaming&V/A (1)
- network&security (5)
- SCM (13)
- mysql (10)
- browsers (4)
- Windows APIs (2)
- opensource (1)
- pm (1)
- GDI (1)
- database (14)
- MFC (1)
- web&fronts (17)
- Tomcat (4)
- OLE (1)
- 观后感 (1)
- Production (2)
- UML (3)
- Javascript (7)
- Cloud Computing&SAAS (5)
- SoftwareEngineering (1)
- Computer&Maintenance (1)
- Web (8)
- Desgin (1)
- J2ee (10)
- mysql cluster (0)
- LB&HA (2)
- webserver (11)
- php (5)
- cas&authtication (0)
- Languages (1)
- IDEs (3)
- architecture (2)
- iOS (8)
- spring (3)
- webservices (1)
- security (1)
- MVCFrameworks (2)
- bservices (0)
- build-tools (2)
- unittest (1)
- spring-security (0)
- sphinx (2)
- hibernate (1)
- mybatis (2)
- search (0)
- nginx (2)
- design&production (2)
- DFS (0)
- algorithm (0)
- distributed&network (0)
- blogs (0)
- os&admin (0)
- fastcgi (0)
- kv-db (0)
- operation&maintenance (1)
- productions (9)
- 养生 (1)
- appserver (1)
- HTTP (2)
- test (1)
- erlang (2)
- browser (0)
- 非技术 (2)
- mobiles (2)
- cloud computing (2)
- Business (2)
- maven (1)
- python (5)
- 人生 (0)
- Cryptography (3)
- CV (0)
- cms (2)
- jqm (2)
- html (2)
- flex (1)
- redmine (1)
- iptables (1)
- groovy (1)
- scala (1)
- grails (1)
- ftp (3)
- vsftpd (2)
- lua (0)
- chroot (3)
- jailkit (3)
- UED (0)
- myeclipse (2)
- ide (2)
- eclipse (2)
最新评论
-
Nick712:
http://blog.csdn.net/victory08/ ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
xs6262460:
Spring AOP根据JdbcTemplate方法名动态设置数据源 -
xhpscdx:
我的解决办法是把D:\ACRS\Projects\TAIS 下 ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
hnraysir:
总结得相当不错,支持下。
使用CodeIgniter 创建 RESTful 服务 REST API【原创译文】 -
云上太阳:
这个必须评论下,间接的救过俺的命啊
解决tomcat启动报错,加强错误日志的显示:
ASIHTTPRequest-身份验证
你可以查阅ASIHTTPRequest授权流程图来了解ASIHTTPRequest如何找到授权凭据,并将授权凭据应用到request上。
为URL指定要使用的用户名和密码
NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
为request指定要使用的用户名和密码
NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setUsername:@"username"]; [request setPassword:@"password"];
将凭据存储到keychain
如果打开了keychainPersistence,所有提供的可用的用户名和密码将被存储到keychain中,以后的request将会重用这些用户名密码,即使你关闭程序后重新打开也不影响。
NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setUseKeychainPersistence:YES]; [request setUsername:@"username"]; [request setPassword:@"password"];
如果你使用keychain但是想要自己管理它,你可以在ASIHTTPRequest.h文件里找到相关的类方法。
将凭据存储到session中
如果打开了useSessionPersistence(默认即是如此),ASIHTTPRequest会把凭据存储到内存中,后来的request将会重用这些凭据。
NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setUsername:@"username"]; [request setPassword:@"password"]; [request setUseSessionPersistence:YES]; //这一项是默认的,所以并不必要 //将会重用我们的 username 和 password request = [ASIHTTPRequest requestWithURL:url];
NTLM授权
要使用NTLM授权的Windows服务器,你还需要指定你要进行授权域。
NSURL *url = [NSURL URLWithString:@"http://www.dreamingwish.com/"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setUsername:@"username"]; [request setPassword:@"password"]; [request setDomain:@"my-domain"];
使用代理来提供凭据
你不一定非要提前指定授权凭据,你还可以让每个request在无法从session或keychain中找到凭据时向它们的代理请求凭据。如果你要连接到一个你并不清楚授权类型的服务器时,这是很有用的。
你的delegate必须实现authenticationNeededForRequest:方法,当request等待凭据时,ASIHTTPRequest将会暂停这个request。如果你持有你需要的凭据,那么先为request设定凭据,然后调用[request retryUsingSuppliedCredentials]即可。如果你想取消授权,调用[request cancelAuthentication],此时,这个request也会被取消。
从1.0.8版开始,一次只能有一个request的delegate收到authenticationNeededForRequest: 或者 proxyAuthenticationNeededForRequest:。当delegate处理第一个request时,其他需要授权的request将会被暂停。如果提供了一个凭据,当前进程中所有其他的request将会假定这个凭据对这个URL有效,并尝试重用这个凭据。如果delegate取消了授权,并且队列的shouldCancelAllRequestsOnFailure值为YES,所有其他的request都将被取消(它们也不会尝试请求凭据)。
当进行同步请求时,你不可以使用代理模式来授权。
在较老的版本中,这么做会导致程序假死,从1.0.8开始,即使你这么做了,代理函数也不会被调用。
使用内建的授权对话框(目前只对iOS有效)
这个特性归功于1.0.8版本的新类ASIAuthenticationDialog 。这个特性主要是用于授权代理(后面会介绍到),但是它也可以用来向用户取得授权凭据。
为了更好的用户体验,大多数(连接单一服务的)app必须为request的delegate实现authenticationNeededForRequest:方法,或者避免同时使用代理式授权。
most apps that connect to a single service should implement authenticationNeededForRequest: in their request delegates, or avoid the use of delegation-style authentication altogether.
但是,会有一些情况下,为普通的授权使用ASIHTTPRequest的标准授权对话框更好:
- 你不想创建你自己的登录表单
- 你可能需要从外部资源获取数据,但是你不清楚你需不需要进行授权
对于这些情况,为request设置shouldPresentAuthenticationDialog为YES,此时,如果你的代理没有实现
authenticationNeededForRequest:方法,那么用户将会看到这个对话框。
一次同时只有一个对话框可以显示出来,所以当一个对话框显示时,所有其他需要授权的request将会暂停。如果提供了一个凭据,当前进程中所有其他的request将会假定这个凭据对这个URL有效,并尝试重用这个凭据。如果delegate取消了授权,并且队列的shouldCancelAllRequestsOnFailure值为YES,所有其他的request都将被取消(它们也不会尝试请求凭据)。
对于同步请求的request,授权对话框不会显示出来。
这个对话框部分模仿了iPhone上Safari使用的授权对话框,它包含以下内容:
- 一段信息来说明这些凭据是用于websever(而非一个proxy)
- 你将要连接到服务器的主机名或者IP
- 授权域(如果提供的话)
- 填写用户名和密码的区域
- 当连接到NTLM授权模式的服务器时,还会包含一个填写domain的区域
- 一个说明信息,指明凭据是否将会被以明文方式发送(例如:“只有当使用基于非SSL的基本授权模式时才会以明文方式发送”)
如果你想改变它的外观,你必须继承ASIHTTPRequest,并重写showAuthenticationDialog来显示你自己的对话框或ASIAuthenticationDialog子类。
在服务器请求凭据前向服务器发送凭据
IMPORTANT
从1.8.1开始,使用基本授权模式的request时,这个特性的行为改变了。你可能需要修改你的代码。
在第一次生成request时,ASIHTTPRequest可以先向服务器发送凭据(如果有的话),而不是等服务器要求提供凭据时才提供凭据。这个特性可以提高使用授权的程序的执行效率,因为这个特性避免了多余的request。
对于基本授权模式,要触发这个行为,你必须手动设置request的authenticationScheme为kCFHTTPAuthenticationSchemeBasic:
[request setAuthenticationScheme:(NSString *)kCFHTTPAuthenticationSchemeBasic];
对于其他授权方案,凭据也可以在服务器要求之前被发送,但是仅当有另一个request成功授权之后才行。
在以下情况下,你也许想要禁用这个特性:
- 你的程序可能会一次使用一系列凭据来与服务器对话
- 安全性对于你的程序来说非常重要。使用这个特性是相对不安全的,因为你不能在凭据被发送前验证你是否连接到了正确的服务器。
要禁用这个特性,这样做:
[request setShouldPresentCredentialsBeforeChallenge:NO];
发表评论
-
iPhone消息推送机制实现与探讨
2013-04-17 15:59 1115iPhone消息推送机制实现 ... -
10个第三方iOS开源库
2013-02-16 14:57 010个第三方iOS开源库 CocoaPods地址:h ... -
浅析iPhone平台三种应用类型的布局方式
2013-02-16 14:05 847浅析iPhone平台三种应用类型的布局方式 ... -
UIImageView圆角,自适应图片宽高比例,图片拉伸,缩放比例
2012-12-28 15:43 1941UIImageView圆角,自适应图片宽高比例,图片 ... -
ios, anroid统一推送
2012-12-17 15:01 0Location: Home / HomeLang ... -
一些iOS高效开源类库
2012-11-04 16:01 0一些iOS高效开源类库 M ... -
IOS中http请求使用cookie
2012-10-19 10:18 1204IOS中http请求使用cookie ... -
iPhone: NSHTTPCookie is not saved across app restarts
2012-10-19 10:17 1235iPhone: NSHTTPCookie is not ... -
Persisting Cookies In An iOS Application?
2012-10-19 10:16 971Persisting Cookies In An iOS ... -
基于Windows的iPad/iPhone开发编译环境
2012-09-11 11:43 989公司要做ios方面开发,打算 ... -
iPhone中调用WCF RESTful Service
2012-09-05 23:56 0iPhone中调用WCF RESTful ...
相关推荐
4. **登录注册**:发送用户登录注册信息到服务器,验证用户身份。 5. **推送通知**:处理服务器推送的APNs通知。 ASIHTTPRequest虽已停止维护,但在许多旧项目中仍然广泛使用。随着Apple推出更现代化的URLSession ...
- **身份验证**:在需要登录验证的场景下,发送包含认证信息的请求。 - **API接口调用**:对于基于RESTful API的应用,可以方便地进行HTTP通信。 4. **注意事项** - ASIHTTPRequest虽功能强大,但项目已停止维护...
9. **身份验证**: - 提供了对 HTTP 基本认证和 Digest 认证的支持,如 `-[ASIHTTPRequest setBasicAuthUsername:password:]`。 10. **SSL 支持**: - 可以配置请求使用 HTTPS,`-[ASIHTTPRequest ...
这个"ASIHttpRequest Demo"是展示如何利用ASIHttpRequest库进行同步请求、队列管理、文件上传、身份验证以及加载网页的实例代码。 一、ASIHttpRequest 同步请求 同步请求在主线程中执行,会阻塞应用程序直到请求...
比如,你可以设置Content-Type头来指定数据格式(如JSON或XML),或者设置Authorization头来添加身份验证信息。 在实际开发中,使用ASIHttpRequest可能涉及到的问题包括网络连接超时、请求失败重试、错误处理等。...
6. **请求头和Cookie管理**:允许自定义HTTP头字段,方便处理身份验证等需求,同时支持Cookie管理。 7. **请求超时和重试机制**:可以设置请求超时,并自动处理重试逻辑。 8. **错误处理**:提供详细的错误信息,...
- **概念**:通过ASIHTTPRequestDelegate方法来提供身份验证所需的凭证。 - **示例代码**:实现`requestAuthenticationForRequest:challenge:`方法。 - **应用场景**:适用于需要动态提供凭证的情况。 ##### 6.4 ...
6. **认证与授权**:内置了对基本认证、HTTP 基本身份验证、NTLM 认证等的支持。 7. **Cookie 支持**:自动处理服务器返回的 Cookie,维持会话状态。 8. **GZIP 压缩**:自动解压和压缩 HTTP 请求和响应,减少网络...
9. **证书和身份验证**:对于HTTPS请求,ASIHTTPRequest可以处理SSL证书验证,以及HTTP基本认证和NTLM认证。 10. **错误处理**:提供了一套完整的错误处理机制,便于开发者捕获和处理网络请求中的问题。 尽管...
5. **自定义请求头和身份验证**:ASIHTTPRequest允许添加自定义请求头,支持多种身份验证方式,如HTTP基本认证和OAuth。 6. **错误处理**:库中包含了完整的错误处理机制,当请求失败时,会提供相应的错误信息,...
8. **身份验证**:支持HTTP基本认证和Digest认证,也可以自定义认证方式。 9. **SSL/TLS支持**:可以安全地处理HTTPS请求。 10. **错误处理**:提供了丰富的错误处理机制,便于调试和问题定位。 在iOS和Mac OS X...
1. 自定义需求:根据项目需求,开发者可以继承ASIHTTPRequest并扩展功能,如增加身份验证、压缩解压等。 2. 性能优化:通过合理配置网络队列,控制并发请求的数量,避免过多的网络开销,提高应用性能。 3. 错误...
7. **自定义请求头和身份验证**:允许开发者添加自定义请求头或处理不同类型的认证机制,如HTTP基本认证和OAuth。 在文件名称列表中,“pokeb-asi-http-request-f99ca46”可能是一个关于ASIHTTPRequest的代码库或者...
7. **身份验证**:支持基本、摘要和NTLM身份验证,并自动保存会话凭据,还可以存储在Keychain中。 8. **Cookie处理**:内置对Cookie的支持,使得保持用户登录状态成为可能。 9. **后台运行**:在iOS 4+系统中,...
随着经验的增长,你可能还会接触到其他网络库,如AFNetworking或Alamofire,以及更复杂的身份验证机制,如OAuth。不过,ASIHTTPRequest是一个很好的起点,它足够简单,适合初学者理解网络请求的基本概念。
题目中的说法“HTTPS和SSL不支持使用X.509数字认证”是错误的,因为HTTPS确实使用了X.509数字证书来验证服务器的身份。 ### WebService 技术 1. **定义**:WebService 是一种通过Web协议提供服务的技术,允许不同...
7. 支持基本、摘要和NTLM身份验证,自动保存会话凭据,并可存储在Keychain。 通过理解这些网络编程模型和工具,开发者可以更有效地在iOS平台上实现网络功能,提高应用的性能和用户体验。无论是进行简单的HTTP请求,...