2012年11月15日 星期四

OAuth & OpenID 介紹

1.What is OpenID?
是一個Open standard, User可以在 提供數位身份(Identity Provider,IdP)網站註冊一個OpenID,User就可以使用OpenID在任何網站進行登入,不必再另外記住每個網站的帳號密碼。
IdP網站有:Yahoo!,Google,Windows Live,AOL,PayPal...等。

OpenID 基本術語:
(1)End User:想要對網站表明身份的User
(2)Identifier: 使用URL or XRI 可以辨別End-User的識別(OpenId)。
(3)Identity Provider,IdP:提供數位身份註冊及驗證的提供者(ex:Google,Windows Live)。
(4)Replying Party,RP:想要驗證End-User的網站或應用程式(ex:第三方)。

驗證方式:
(1)checkid_immediat:兩個server間所有訊息交換都在後台進行,不會提示End-User.
(2)checkid_setup:End-User 藉由存取第三方網站相同的瀏覽器端與OpenId提供者(ex.Google)進行訊息交換。(此種比較常用)

OpenID用戶大全:http://www.comsharp.com/GetKnowledge/zh-CN/CMS_K309.aspx
-------------------------------------------
-------------------------------------------
2.What is OAuth?

OAuth (Open Authorization) ,透過第三方Web應用程式去讀取User在另一個網站存放的個人資源,User不需透露帳密給第三方Web應用程式。

(1)Service Provider:
(2)User:
(3)Client:

1.User login
OAuth workflow

------------------------------------
------------------------------------
3.What is OAuth 2.0?
因為OAuth1.0有Securtity issue(session fixation attacks),所以後續發展了OAuth 2.0 且不相容 OAuth 1.0 和 1.0a。

Support OAuth 2.0 : Facebook, Google, Windows Live

4.What is different?

----------------------------------------
----------------------------------------
5.How to use?
Node.js
(1)EveryAuth:
Positive:support many types of openId, easy to learn.
Negative:heavy depend on express,too much more module to maintain

(2)MongooseAuth(base on Everyauth)
Positive:support 常用的OpenId,與MongoDB結合
Negative:depend on everyauth,程式也需跟著變動

(3)Passport
Positive:Idiomatic Node.js,Modular,Flexible,API Authentication,Reliable,
Negative:許多額外function功能需要自己維護


Java
(1)scribe-java

Ruby
(1)OmniAuth

----------------------------------------
----------------------------------------
6.Security?
notice Web Security top 10.

沒有留言: