最近更新: 2009-10-16

雲端運算survey項目 - Web Service and Single Sign-on

基於雲端運算的服務內容,常以 Web Service 的方式供應。Single Sign-on 則是為了 節省使用者在不同的 Web 服務之間重複進行帳號登入動作的時間。

Web Service

SOAP

簡單物件存取協定 (SOAP,全寫為Simple Object Access Protocol)是一種標準化的通訊規範,主要用於Web服務(web service)中

http://zh.wikipedia.org/zh-tw/SOAP

在漫長的實務經驗中,透過網路上大量的 CGI 與 REST 實作品的展示,web 編程人員證明了 SOAP 基本上是多此一舉。

RESTful

REST (REpresentational State Transfer) 的概念來自於 Roy Thomas Fielding 寫的一篇文章 《Architectural Styles and the Design of Network-based Software Architectures》。 其概念結合了 HTTP 與 URL 兩種協定,以及如何運用於網路軟體架構設計。

以 URL 定位資源,根據 HTTP 內容指示操作動作與回應訊息。一個符合上述實作方式的網路服務,就稱之為 RESTful web service 。 有些文章則更進一步,將 ATOM 協定也加了進來,主要是看上 ATOM 格式的特點,將之運用於資源內容的更新工作。 有些 RESTful 文章還會強調要透過 HTTP Authorization 限制使用者存取資源的權限,而不是用表單加 Cookie。

REST and RESTfull web service

UDDI ( Service Registration and Location )

To further illustrate the concept of a UDDI Web services registry, consider the important roles similar systems have played in other distributed application architectures. The Domain Name System (DNS) controls the Internet’s network addresses, CORBA implemented its Trading and Naming services to help direct the flow of system calls, and Microsoft Windows uses an eponymous Windows Registry to manage the interactions of COM/DCOM components. Although UDDI goes beyond the simple location transparency of most of these systems by providing an advanced framework for defining and querying services by taxonomy, the essential value of a UDDI registry is similar: it provides a mechanism for managing an otherwise ad hoc, chaotic, and un-scalable series of interactions.

http://uddi.xml.org/files/uddi-exec-wp.pdf UDDI Executive Overview: Enabling Service-Oriented Architecture

UDDI 是 Web 服務的登錄與查詢服務,概念類似 DNS。 Web 服務供應商將服務的 URL 登錄在 UDDI 伺服器中,使用者可以就其需求功能向 UDDI 伺服器查詢有無供應。 UDDI 向使用者回報可用的 Web 服務資訊 (WSDL) ,使用者就可以向供應商索求服務(預期透過 SOAP 調用)。

WSDL

WSDL描述Web服務的公共介面。這是一個基於XML的關於如何與Web服務通訊和使用的服務描述;也就是描述與目錄中列出的Web服務進行交互時需要綁定的協議和信息格式。

http://en.wikipedia.org/wiki/Web_Services_Description_Language WSDL

小結

UDDI 的使用效益不如預期。UDDI預期是由第三方服務者提供登錄與查詢服務, 提供來自不同企業、不同供應商登錄 Web 服務之用。 但實務上多半無此必要。Web 服務供應者大多直接在其網站上公布服務內容, 使用者通常也只對已知的 Web 服務供應者索求服務。 在企業內部的專案項目中,也無此必要。

RESTful 證明了 SOAP 多此一舉。WSDL 也許是 UDDI 中比較值得一看的內容。

Single-Sign-On

單一登入機制。

Kerberos

Kerberos是一種計算機網路認證協議,它允許在非安全網路環境下通信, 向另一個實體以一種安全的方式證明自己的身份。 它的設計主要針對客戶-伺服器模型,並提供了一系列交互認證-用戶和伺服器都能驗證對方的身份。 Kerberos協議可以保護網路實體免受竊聽和重複攻擊。

Kerberos使用Needha-Schroeder協議作為它的基礎。它使用了一個由兩個獨立的邏輯部分: 認證伺服器和票據授權伺服器組成的"可信賴的第三方",術語稱為密鑰分發中心(KDC)。 Keerberos工作在用於證明用戶身份的"票據"的基礎上。

KDC持有一個密鑰資料庫;每個網路實體-無論是客戶還是伺服器-共享了一套只有他自己和KDC知道的密鑰。 密鑰的內容用於證明實體的身份。對於兩個實體間的通信,KDC產生一個會議密鑰,用來加密他們之間的交互信息。

http://zh.wikipedia.org/zh-tw/Kerberos

由於 Kerberos 使用獨特的協定,對於 web 服務環境並不親切,一般不用於 web 服務環境。 此外,由於 Kerberos 需要認證中心 (KDC) 的持續回應,當認證中心停機時,沒有人可以登入系統。

OpenID

OpenID 是一個去中心化的網上身份認證系統。對於支持OpenID的的網站, 用戶不需要記住像用戶名和密碼這樣的傳統驗證標記。取而代之的是, 他們只需要預先在一個作為OpenID的身份提供者(身份供應商)的網站上註冊。 OpenID的是去中心化的,任何網站都可以使用OpenID的來作為用戶登錄的一種方式, 任何網站也都可以作為OpenID的身份提供者。

http://zh.wikipedia.org/wiki/OpenID

由於 OpenID 運行於 HTTP 協定之上,使用符合 XML 的 XRDS 文件交換資料, 並提供 stateless 模式的認證方式,對於 web 服務的使用者有天生的便利性, 所以被普遍應用在 web 服務上。 Google 和 Yahoo! 都支援 OpenID。

IP 名單

在企業內部專案項目中,對企業內部的電腦常用 IP 名單認證。 直接將使用者的電腦 IP 與其使用權限登錄在 IP 名單中。 專案內分散的不同服務主機之間,更常利用此方式進行 RPC 動作。

小結

Kerberos 的安全性較 OpenID 高,但 OpenID 的使用便利性較高。在 web 服務環境中, OpenID 更具有天生的優勢。

對軟體開發者而言,當我們僅需要為使用者提供漫遊於多個 web 服務之間的單一登入機制時, OpenID 提供了較簡便的實作方式,目前也有多種語言的函數庫可運用。 如: Java, Perl, PHP, Python, Ruby. http://openid.net/developers/libraries/

樂多舊網址: http://blog.roodo.com/rocksaying/archives/10346819.html