SSO - SAML/OAuth

摘要:SSO - SAML/OAuth

在公司的App開發案中,原先是綁定機器的方式,做使用者辨識,

但由於機器的一些機碼資訊是會變動的(重置、刪除之後)

導致,用機碼資訊來辨識機器使用者,是會有問題的。

 

因此客戶,提出要使用他們的AD Server來做驗證使用者,

提出了SSO、SAML/OAuth的東西,

 

不知道這些是什麼,Google一下。

SSO = Single sign-on (單一登入)

http://en.wikipedia.org/wiki/Single_sign-on

http://www.dotblogs.com.tw/jimmyyu/archive/2009/07/14/9501.aspx

 

問一下同事有關SSO的東西,

同事說,像我們使用FB,假設有五個App,他們可以呼叫FB的App做登入(或FB的登入頁面做登入)會回傳AccessToken,用這個AccessToken假設其為使用者去存取使用者的相關資訊(有一些授權項目可用)

而不同的App都要跟FB申請Developer 需要的client_id (類似FB給你的app 專用碼,或appkey)

https://developers.facebook.com/docs/reference/dialogs/oauth/

 

申請client_id 應該是如以下連結所說的

http://cire.pixnet.net/blog/post/31367868-%5Bfacebook%5Dhow-to-use-oauth-2.0-authentication-and-authorizat

 

要實作SSO,有很多種方法,

SAML與OAuth是我目前遇到對方要求的,

 

那SAML是什麼呢

Security Assertion Markup Language

http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language

http://searchfinancialsecurity.techtarget.com/definition/SAML

http://www.ithome.com.tw/itadm/article.php?c=29004

http://www.csie.fju.edu.tw/~ie955148/indexXML.html

 

以我的瞭解,就是用XML格式當傳輸文件,做第三方認證,覺r得是基於Web Browser,因為要使用cookies,並透過導頁方式存取

依我們公司是做app 的狀況下,所以我覺得這不是我們要用的 。

 

所以應該是使用OAuth

 

對方說我們support OAuth嗎?

我在想,我們是第三方,應該不是我們提供OAuth,而是我們要使用對方的OAuth才對。

 

OAuth又有OAuth1.0、OAuth2.0

但OAuth1.0有一些安全問題,所以我就直接查OAuth2.0

http://coding.anyun.tw/2012/03/13/oauth-2/

http://developers.douban.com/wiki/?title=oauth2

 

一開始還看不太懂,

目前也只知道

我需要跟來源提供者,申請client_id

再用client_id,取得一個短暫時間有效的code

再用code取得AccessToken

用這AccessToken,就可以呼叫他們各API

 

呼叫各API,只是我授權了這個服務供應商,能夠呼叫API,

但還沒有帳號密碼登入的使用者的token。

這個可能還要另外有API處理吧。

目前只研究到這裡。