iOS 網路開發(五)認證和授權的一些基本理解,ios授權
原創Blog,轉載請註明出處
blog.csdn.net/hello_hwc
前言:可能在公司工作時間長了,以至於iOS都習慣性的寫成了IOS,既然上一篇文章裡一同學提出來了,我就改過來吧。本文介紹下伺服器認證的流程,我對於伺服器端的瞭解很少,所以如果有不準確的地方,歡迎指正,我會及時進行修改。
認證和授權
簡單來說就是伺服器上儲存了很多資源,這些資源不是用戶端都能訪問的,用戶端要訪問資源的時候,要先讓伺服器知道,這些資源我可以訪問,這就是一個認證和授權的過程。
私人平台(供自己的App使用的伺服器)的認證方式靜態使用者名稱密碼
注意:具體情況和伺服器端的設計有關係,並不是所有的都是這樣的
動態密碼
常見的是發動到手機上的動態密碼。
BTY:
驗證碼
當伺服器發現用戶端登入異常的時候,會給App發送一張圖片作為驗證碼。
開放平台的(供第三方應用訪問)認證方式
常見兩種方式
Http Basic Authorization
簡單來說就是每次API請求都需要包括使用者名稱密碼,使用者名稱密碼作為http header的一行。
IOS的代碼也比較簡單
注意如下代碼僅僅是加了一個授權的Header,如果要正常使用,通常還需要其他的header
NSString *username = @""; NSString *password = @""; NSMutableURLRequest * request = nil; NSString *basicAuthStr = [NSString stringWithFormat:@"%@:%@",username,password]; NSData * basicAuthData = [basicAuthStr dataUsingEncoding:NSASCIIStringEncoding]; NSString * basicAuthValue = [NSString stringWithFormat:@"Basic %@",[basicAuthData base64EncodedDataWithOptions:0]]; [request setValue:basicAuthValue forHTTPHeaderField:@"Authorization"];
OAuth 2
主要包括四個部分
- RO(resource onwer)資源所有者,對資源又授權能力的人。
- RS (resource sever) 資原始伺服器,實際儲存資源的裝置
- Client 第三方應用,在RO授權後,就可以訪問對應的資源
- AS (authorization server) 授權伺服器,對訪問者進行身份認證,為RO提供授權審批次程序,最終頒發Access Token給訪問者。Access Token具有實效。
大概的流程是這樣的
以新浪微博的OAuth 2為例
第三方應用要訪問新浪微博為例