青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

OpenID使用手冊(cè)

什么是OpenID?

OpenID
是一種開放、離散式的用于用戶數(shù)字標(biāo)識(shí)的開源框架。

請(qǐng)讓我們思考自己所擁有的在線帳號(hào)種類:博客、wikito-do list、個(gè)人相冊(cè)。在網(wǎng)絡(luò)應(yīng)用日益充斥的今天,這些個(gè)人在線帳號(hào)可謂不勝枚舉,而對(duì)帳號(hào)的需要也同樣無處不在,乃至當(dāng)我們想在好友博客上進(jìn)行評(píng)論時(shí)都需要注冊(cè)成為該博客系統(tǒng)的用戶。于是作為終端用戶,我們不得不在每個(gè)網(wǎng)站上設(shè)置帳號(hào),并管理眾多的帳號(hào)。而采用OpenID技術(shù)的話,你就無須再管理這些相互獨(dú)立的帳號(hào),而是通過認(rèn)證服務(wù)器管理自己唯一的身份標(biāo)識(shí)。

OpenID
常見的應(yīng)用場(chǎng)景:某用戶試圖登錄一個(gè)外部網(wǎng)站。與提交用戶名和密碼的方式不同,他只提交了屬于自己的一個(gè)URL,例如:http://johnsmith.example.com/

這個(gè)URL即指向了用戶的OpenID認(rèn)證服務(wù)器,同時(shí)又是用戶的身份標(biāo)識(shí)。因此外部網(wǎng)站使用此URL便可以找到用戶的認(rèn)證服務(wù)器,并詢問認(rèn)證服務(wù)器:該用戶聲稱他擁有此URL。而這個(gè)URL說明了你負(fù)責(zé)認(rèn)證工作,那么請(qǐng)告訴我,該用戶能否訪問我的站點(diǎn)?。認(rèn)證服務(wù)器將提示用戶登入認(rèn)證系統(tǒng),并詢問用戶是否允許和外部網(wǎng)站進(jìn)行認(rèn)證。如果用戶同意的話,那么認(rèn)證服務(wù)器將通知外部網(wǎng)站——用戶已經(jīng)通過認(rèn)證。在上面,我們通過擬人化的表達(dá)方式來形象生動(dòng)地詮釋整個(gè)認(rèn)證請(qǐng)求/回應(yīng)過程。

用戶可以使用同一個(gè)URL用作在任何支持OpenID認(rèn)證的外部網(wǎng)站中使用的標(biāo)識(shí)。這正是OpenID與其它傳統(tǒng)認(rèn)證方式的最大不同。通過使用URL,可以使外部站點(diǎn)非常容易地獲取到負(fù)責(zé)認(rèn)證工作的服務(wù)器位置。而只有認(rèn)證服務(wù)器才需要輸入密碼來驗(yàn)證用戶身份。其它希望驗(yàn)證用戶身份的站點(diǎn)都將詢問用戶所注冊(cè)的認(rèn)證服務(wù)器。如果你正在使用支持OpenID的門戶站點(diǎn)(比如AOL),那么你就可以使用現(xiàn)成的AOL即時(shí)消息登錄帳號(hào)來登錄AOL站點(diǎn),而無需另外注冊(cè)。因此,我們可以猜想GoogleYahoo也許已經(jīng)開始著手建造他們的OpenID服務(wù)。

你一定想知道OpenID是如何實(shí)現(xiàn)分散化服務(wù)的?由于用戶具有選擇OpenID服務(wù)提供者的權(quán)利,因此你會(huì)在最初選擇AOL作為OpenID提供者,而過一段時(shí)間后,可能覺得希望更換到另外一個(gè)OpenID提供者,此時(shí)你所需要做的就是修改以下的HTML標(biāo)簽:

<link rel="openid.server" >


保存這些link元數(shù)據(jù)的最常見位置就是個(gè)人站點(diǎn)(比如博客)的根頁面。

如何使用OpenID?

OpenID
絕妙地解決了多個(gè)帳號(hào)同步問題,但并不僅僅如此。例如,你可以利用它建立跨應(yīng)用、跨域的單點(diǎn)登錄(Single sign-on)。如果你使用同一個(gè)OpenID登入了博客和個(gè)人相冊(cè),那么你只需要在登錄過程中進(jìn)行一次認(rèn)證。對(duì)于在此之后的每個(gè)需要登錄的應(yīng)用(在同一個(gè)session周期)只需提供OpenID,而不是傳統(tǒng)的用戶名和密碼。

大多數(shù)OpenID提供者也提供了支持多個(gè)配置的功能。這樣你就可以使用“Bob Smith”登錄博客,而使用“Robert J Smith”登錄企業(yè)wiki。隨著OpenID提供者的日益成熟和OpenID功能上的提升,我們不久就會(huì)使用對(duì)來自伙伴公司OpenID認(rèn)證服務(wù)器主機(jī)名的用戶進(jìn)行認(rèn)證的服務(wù)。

哪些網(wǎng)站支持OpenID?

OpenID
技術(shù)出現(xiàn)不久,便獲得了在眾多公共消費(fèi)站點(diǎn)的熱捧:DiggSix ApartZoomrAOL。其中AOL為老用戶提供了OpenID支持,使得六千五百萬的登錄用戶在一日之內(nèi)就全部能夠使用OpenID。目前已經(jīng)具有超過九千五百萬的用戶能夠使用OpenID登錄系統(tǒng),并且每天都有2550個(gè)站點(diǎn)加入到支持OpenID規(guī)范的隊(duì)伍中。另外,OpenID增加了對(duì)Firefox3和微軟Windows Vista的支持。

下面是實(shí)現(xiàn)了OpenID代碼庫的語言列表:
        ? C#
        ? C++
        ? Java
        ? Perl
        ? Python
        ? Ruby
        ? PHP
        ? Coldfusion

OpenID
社區(qū)維護(hù)了這些代碼庫的清單:http://openid.net/wiki/index.php/Libraries。在本文的后面,我們將討論到OpenIDJava實(shí)現(xiàn):OpenID4Java(http://www.openid4java.org)

OpenID
協(xié)議綜述

OpenID
協(xié)議非常易于擴(kuò)展,下面的圖表展示了OpenID2.0草案的基本工作流程。它展示了在終端用戶、Relying Party站點(diǎn)(一個(gè)示例站點(diǎn))和OpenID服務(wù)提供者之間的交互過程(最常見的認(rèn)證流程)。
clip_image001

用戶登入外部站點(diǎn)的過程主要分為以下七個(gè)步驟:

1. Relying Party
站點(diǎn)請(qǐng)求用戶標(biāo)識(shí)

此步驟非常簡單:用戶提供一個(gè)字符串(以URL或者XRI格式)給外部站點(diǎn),使后者能夠識(shí)別用戶。

        1.
外部站點(diǎn)請(qǐng)求用戶發(fā)送標(biāo)識(shí)。通常使用帶有Open圖標(biāo)的文本輸入框、用于提交信息的按鈕組成的form來完成此功能。為了方便起見,文本輸入框的name屬性應(yīng)為openid_identifier,這樣以便瀏覽器自動(dòng)將其識(shí)別為一個(gè)OpenID登錄form
        2.
用戶輸入標(biāo)識(shí),標(biāo)識(shí)可能采用下面的形式:
        ? URI/URL (
通過http或者https)
        ? XRI
XRI是一種廣義的、分散式的URI。它能用于任何使用URI的地方。XRI主要采用以下形式:xri://authority/path?query#fragment。了解更多關(guān)于XRI的信息請(qǐng)看:XRI語法規(guī)范

用戶標(biāo)識(shí)類似這個(gè)樣子:http://myname.myhost.com/。外部站點(diǎn)經(jīng)常將OpenID logo放置到其登錄form上,這樣可以使你很快地辨別出是否使用OpenID
clip_image002
用戶在點(diǎn)擊位于外部站點(diǎn)登錄頁面上的“Login”按鈕后便啟動(dòng)了認(rèn)證過程。

2.“
標(biāo)準(zhǔn)化”: Relying Party站點(diǎn)整理用戶標(biāo)識(shí)

用戶輸入了標(biāo)識(shí)后,此標(biāo)識(shí)便由外部站點(diǎn)進(jìn)行整理(標(biāo)準(zhǔn)化)。由于標(biāo)識(shí)可能使用XRI或者URI格式,因此整理的過程非常復(fù)雜:
        1.
如果標(biāo)識(shí)以xri://xri://$ip或者xri://$dns*開頭,那么我們要去掉這些頭部標(biāo)記。
        2.
如果余下字符串中的第一個(gè)字符是XRI的全局上下文符號(hào)(=@+ $!),那么此字符串為標(biāo)準(zhǔn)的XRI標(biāo)識(shí)。否則,將被視為HTTP URL(如果http/https前綴沒有定義,我們需要為其添加上http://)。當(dāng)然,URL必須遵守URL命名規(guī)范。最終獲得的URL就是一個(gè)標(biāo)準(zhǔn)的URL標(biāo)識(shí)。

下面是一些示例:
clip_image003

下面的流程圖描繪了標(biāo)準(zhǔn)化處理過程:
clip_image004

3.“
發(fā)現(xiàn)”: Relying Party站點(diǎn)查詢與OpenID服務(wù)器進(jìn)行通訊的方式

外部站點(diǎn)使用標(biāo)準(zhǔn)化的標(biāo)識(shí)來查詢用于發(fā)起請(qǐng)求所必須的信息。對(duì)于發(fā)現(xiàn)階段來講,其使用的解析協(xié)議和獲取的結(jié)果文檔都取決于在標(biāo)準(zhǔn)化階段決定的標(biāo)識(shí)類型。這正是OpenID2.0規(guī)范的特殊之處。
clip_image005

快速參考:

        ? XRI
解析:類似通過UDP將主機(jī)名解析為IPDNS協(xié)議;它將XRI轉(zhuǎn)換為XRDS。其目的是提供一種將厚重、通用的XRI格式轉(zhuǎn)換為真實(shí)可用的描述符。

        ? YADIS
協(xié)議:URL連接到XRDS上。這是一種非常簡單的協(xié)議,它將當(dāng)前的HTTP或者HTTPS URL直接指向XRDS

        ? XRDS
:一種基于XMLXRI資源描述符。它被設(shè)計(jì)用來提供關(guān)于XRI的可用的、描述性信息。在OpenID應(yīng)用場(chǎng)合中,XRDS用來描述OpenID服務(wù)器,并且使用“priority”參數(shù)標(biāo)識(shí)了用戶對(duì)服務(wù)器的優(yōu)選順序。在下面的示例中,http://www.livejournal.com/users/frank具有最高的優(yōu)先權(quán)(最低的數(shù)值):

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)"
xmlns:openid="http://openid.net/xmlns/1.0">
  <XRD>
    <Service priority="50">
      <Type>http://openid.net/signon/1.0</Type>
      <URI>http://www.myopenid.com/server</URI>
      <openid:Delegate>http://smoker.myopenid.com/</openid:Delegate>
    </Service>
    <Service priority="10">
      <Type>http://openid.net/signon/1.0</Type>
      <URI>http://www.livejournal.com/openid/server.bml</URI>      <openid:Delegate>http://www.livejournal.com/users/frank/</openid:Delegate>
    </Service>
    <Service priority="20">
      <Type>http://lid.netmesh.org/sso/2.0</Type>
      <URI>http://mylid.net/liddemouser</URI>
    </Service>
  </XRD>
</xrds:XRDS>


        ?
使用HTML代碼。在HTML<head>部分必須提供以下標(biāo)簽:

<link rel="openid2.provider" />



可選的,如果用戶使用委派(delegation)(就是用戶宣稱擁有一個(gè)不存在于該OpenID服務(wù)器上的本地標(biāo)識(shí)),則需要使用下面的標(biāo)簽:

<link rel="openid2.local_id" />



例如,某人正在使用openidprovider.com這個(gè)OpenID服務(wù)器來驗(yàn)證他在另一個(gè)OpenID服務(wù)器usersite.com上的身份,那么其本地標(biāo)識(shí)將使用類似user.openidprovider.com的形式。

這個(gè)發(fā)現(xiàn)的過程允許外部站點(diǎn)知道兩件事,其中一件是外部站點(diǎn)如何與OpenID服務(wù)器進(jìn)行通訊:
        1.OpenID
提供者端點(diǎn)URLOpenID提供者的最終URL(服務(wù)器URL)。
        2.
認(rèn)證協(xié)議版本: OpenID認(rèn)證使用的協(xié)議版本。

作為可選的,如果用戶使用委派,那么外部站點(diǎn)將需要知道:
        1.
用戶宣稱的標(biāo)識(shí):此標(biāo)識(shí)為用戶宣稱屬于自己的。它是在登錄過程中用戶提供過的標(biāo)識(shí)。
        2.
本地標(biāo)識(shí)(OP-Local Identifier:用戶在其OpenID服務(wù)器上擁有的本地標(biāo)識(shí)。

例如,用戶使用http://www.example.com/作為其標(biāo)識(shí),但外部網(wǎng)站實(shí)際上通過https://www.exampleprovider.com/endpoint/這個(gè)OpenID服務(wù)器來驗(yàn)證用戶標(biāo)識(shí)https://exampleuser.exampleprovider.com/。那么在對(duì)http://www.example.com/執(zhí)行發(fā)現(xiàn)的過程中,我們需要在XRDS文檔的最后一個(gè)XRD成員中提供下面的XML片段

<Service xmlns="xri://$xrd*($v*2.0)">
  <Type>http://specs.openid.net/auth/2.0/signon</Type>
  <URI>https://www.exampleprovider.com/endpoint/</URI>
  <LocalID>https://exampleuser.exampleprovider.com/</LocalID>
</Service>



4. Relying Party
站點(diǎn)建立與OpenID服務(wù)器之間的關(guān)聯(lián)(可選)

通過在外部站點(diǎn)和OpenID服務(wù)器之間的關(guān)聯(lián)(association),我們可以建立一種在兩者之間共享的加密通道,它可以用來驗(yàn)證后續(xù)的協(xié)議信息并降低通訊回合數(shù)。在OpenID規(guī)范中對(duì)于實(shí)際創(chuàng)建關(guān)聯(lián)的過程進(jìn)行了詳盡的描述。簡單來講就是使用了一種Diffie-Hellman密鑰交換算法來生成共享密鑰。此密鑰用于對(duì)信息進(jìn)行簽名。

這樣使得外部站點(diǎn)和OpenID服務(wù)器之間能夠安全地通訊。這里指的安全性是通過傳輸層(使用SSL)或者通過應(yīng)用層的HMAC SHA1或者HMAC SHA256算法實(shí)現(xiàn)的。關(guān)聯(lián)請(qǐng)求的成果就是assoc_handle(關(guān)聯(lián)權(quán)柄),外部站點(diǎn)和OpenID服務(wù)器將在本次關(guān)聯(lián)的后繼活動(dòng)中將它作為對(duì)消息進(jìn)行加密的密鑰。

關(guān)聯(lián)階段被標(biāo)為可選的,這是因?yàn)?span lang="EN-US">OpenID
協(xié)議還允許外部站點(diǎn)直接請(qǐng)求認(rèn)證(不作關(guān)聯(lián))、并且接著請(qǐng)求對(duì)認(rèn)證信息進(jìn)行驗(yàn)證。這樣外部站點(diǎn)可以不保有關(guān)聯(lián)權(quán)柄信息,以實(shí)現(xiàn)無狀態(tài)通訊。而這種方式被推薦用于執(zhí)行與OpenID服務(wù)器之間的相關(guān)通訊,但如果不能使用此方式的話,就必須創(chuàng)建上面講的關(guān)聯(lián)方式。

5. Relying Party
站點(diǎn)請(qǐng)求認(rèn)證

我們通過使用重定向頁面可以建立認(rèn)證請(qǐng)求。請(qǐng)查看下表中的重要參數(shù)值,詳細(xì)信息請(qǐng)參考OpenID相關(guān)信息格式文檔:
clip_image006
請(qǐng)注意:外部站點(diǎn)并沒有直接發(fā)送HTTP請(qǐng)求到OpenID服務(wù)器,而是重定向到OpenID服務(wù)器頁面。由于這樣使得OpenID服務(wù)器能夠從用戶瀏覽器中讀取cookie而沒有將任何認(rèn)證細(xì)節(jié)泄露給外部站點(diǎn),因此這個(gè)過程是安全的。

6. OpenID
服務(wù)器回應(yīng)認(rèn)證請(qǐng)求

在接收到OpenID認(rèn)證請(qǐng)求后,OpenID服務(wù)器必須決定允許還是拒絕此用戶的認(rèn)證。這將由用戶從前是否在OpenID服務(wù)器上認(rèn)證過決定。

請(qǐng)注意:OpenID服務(wù)器在接收認(rèn)證請(qǐng)求信息時(shí)是具有控制權(quán)的。這意味著它不但能夠異步地回應(yīng)認(rèn)證請(qǐng)求信息,并在它回應(yīng)認(rèn)證請(qǐng)求之前與用戶進(jìn)行一系列的交互。大多數(shù)認(rèn)證服務(wù)器都提供給用戶一個(gè)頁面使其能夠選擇允許或者拒絕來自外部站點(diǎn)的認(rèn)證請(qǐng)求。

一旦OpenID服務(wù)器已經(jīng)回應(yīng)了認(rèn)證請(qǐng)求,那么它將創(chuàng)建一個(gè)如下描述的認(rèn)證回應(yīng)信息,低層信息細(xì)節(jié)請(qǐng)閱讀OpenID協(xié)議文檔:
clip_image007

此回應(yīng)通過將用戶重定向到外部站點(diǎn)的方式發(fā)送,以確保外部站點(diǎn)和OpenID服務(wù)器之間在認(rèn)證請(qǐng)求/回應(yīng)過程中沒有直接通訊。

7.
驗(yàn)證間接回應(yīng)

協(xié)議的最后一步是外部站點(diǎn)驗(yàn)證這個(gè)發(fā)自OpenID服務(wù)器的間接認(rèn)證回應(yīng)信息。

當(dāng)外部站點(diǎn)接收到回應(yīng)時(shí),它必須在接受其內(nèi)容之前進(jìn)行下面的驗(yàn)證:
        ? “openid.return_to”
的參數(shù)值是否匹配當(dāng)前請(qǐng)求的URL。這確保OpenID服務(wù)器重定向用戶、發(fā)送回應(yīng)信息到正確的URL
        ?
被發(fā)現(xiàn)的信息是否與回應(yīng)信息相匹配。
        ?
具有相同參數(shù)值的“openid.response_nonce”表示OpenID服務(wù)器遭到了重放攻擊(reply attacks)
        ?
在回應(yīng)信息中的簽名是否有效、要求的簽名域是否都被簽名。這保證認(rèn)證信息沒有被篡改過。

協(xié)議擴(kuò)展

OpenID
協(xié)議提供了一個(gè)基本的認(rèn)證機(jī)制。目前還有基于OpenID的其它可用協(xié)議:
        ? Attribute Exchange
OpenID屬性交換是一種用于在端點(diǎn)之間交換標(biāo)識(shí)信息OpenID服務(wù)擴(kuò)展。其提供了對(duì)標(biāo)識(shí)信息的接收和存儲(chǔ)。
        ? Simple Registration
:這是OpenID認(rèn)證協(xié)議的擴(kuò)展,它允許非常輕量級(jí)的配置交換。主要用于在終端用戶使用web服務(wù)注冊(cè)新帳號(hào)時(shí)傳送八種常用的請(qǐng)求信息。

使用OpenID4Java實(shí)現(xiàn)OpenID協(xié)議
clip_image008
OpenID4Java
是對(duì)OpenID1.12.0規(guī)范的實(shí)現(xiàn),目前它通過code.google.com系統(tǒng)進(jìn)行維護(hù)。此項(xiàng)目初始代碼是由Sxip捐獻(xiàn)出來的,而后Atlassian等公司參與進(jìn)來,并為實(shí)現(xiàn)支持2.0規(guī)范(屬性交換規(guī)范)的API貢獻(xiàn)了大量的工作。

在使用OpenID4Java之前,你需要完成以下工作:
        ?
下載OpenID4Java代碼庫,并將其安裝到你的項(xiàng)目中。
        ?
修改你的認(rèn)證提示,使其詢問用戶的OpenID標(biāo)識(shí),而不是從前的用戶名和密碼。
        ?
創(chuàng)建針對(duì)用戶標(biāo)識(shí)的認(rèn)證請(qǐng)求,并將用戶重定向到他們的OpenID服務(wù)器。
        ?
在返回URL中接收OpenID提供者的認(rèn)證回應(yīng)并進(jìn)行驗(yàn)證。

這樣,你的web應(yīng)用就會(huì)像在上面協(xié)議綜述中的流程圖所展示的“Relying Party”那樣工作。

第一步是創(chuàng)建消費(fèi)者對(duì)象,它將向認(rèn)證服務(wù)器發(fā)出認(rèn)證請(qǐng)求。這里我們將消費(fèi)者對(duì)象視為一個(gè)貫穿應(yīng)用的個(gè)體,以使相關(guān)的關(guān)聯(lián)密鑰能夠保存在同一位置。因?yàn)楫?dāng)面臨多個(gè)認(rèn)證請(qǐng)求時(shí),在不同的請(qǐng)求之間保存密鑰將在兩個(gè)端點(diǎn)(請(qǐng)求和回應(yīng)端點(diǎn))間引起下幅度的性能下降。

Sample Consumer
代碼片段:

/**
 * Sample Consumer (Relying Party) implementation.
 */
public class SampleConsumer
{
    public ConsumerManager manager;

    public SampleConsumer() throws ConsumerException
    {
        // instantiate a ConsumerManager object
        manager = new ConsumerManager();
    }

    ...
}



一旦用戶提供了OpenID URL,你就需要獲取OpenID認(rèn)證服務(wù)器的端點(diǎn)URL,發(fā)送請(qǐng)求到此URL。而OpenID認(rèn)證服務(wù)器的端點(diǎn)被確定后,你還要?jiǎng)?chuàng)建一個(gè)和服務(wù)器關(guān)聯(lián)的共享密鑰。

// discover the OpenID authentication server's endpoint URL
List discoveries = manager.discover(userSuppliedOpenID);

// attempt to associate with the OpenID provider
// and retrieve one service endpoint for authentication
DiscoveryInformation discovered = manager.associate(discoveries);

// store the discovery information in the user's session for later use
session.setAttribute("discovered", discovered);



以上的調(diào)用將完成:
        ?
下載OpenID提供者列表(一般只有一個(gè)提供者)。返回結(jié)果將按照用戶指定的優(yōu)選順序排列。
        ?
通過關(guān)聯(lián)獲取和OpenID提供者之間的共享密鑰。
        ?
將關(guān)聯(lián)(發(fā)現(xiàn)信息)保存,以備之后的使用。

我們現(xiàn)在需要將用戶重定向到他們的OpenID提供者頁面,并告訴OpenID提供者外部站點(diǎn)的地址(返回URL,這里就是你的站點(diǎn)),以使OpenID提供者知道在執(zhí)行完認(rèn)證后將用戶發(fā)送到哪里。

// define the return path
String returnURL = "http://company.com/openidresponse.jsp";

// generate an AuthRequest message to be sent to the OpenID provider
AuthRequest authReq = manager.authenticate(discovered, returnURL);

// redirect the user to their provider for authentication
httpResp.sendRedirect(authReq.getDestinationUrl(true));



上面的代碼將用戶重定向到他們的OpenID提供者,在那里用戶將被詢問是否同意和你的站點(diǎn)進(jìn)行認(rèn)證。(請(qǐng)注意:無論用戶同意臨時(shí)授權(quán)給你的web應(yīng)用、還是總是或者授權(quán),OpenID提供者都將保存此首選標(biāo)識(shí))。當(dāng)用戶再次訪問你的web應(yīng)用時(shí),如果用戶已經(jīng)被OpenID提供者認(rèn)證過并且在首次認(rèn)證時(shí)選擇了總是,那么此用戶將可以訪問你的web應(yīng)用,而無需再次認(rèn)證。

在認(rèn)證用戶之后,OpenID提供者將用戶重定向到外部站點(diǎn)(由返回URL定義的web應(yīng)用),并發(fā)送認(rèn)證回應(yīng)信息給你的web應(yīng)用,而你的web應(yīng)用將需要接收此回應(yīng)。你可以顯示錯(cuò)誤信息或者將用戶發(fā)送到成功頁面,這完全取決于你的工作流。

這是處理來自OpenID提供者認(rèn)證信息的最簡單過程:

// extract the parameters from the authentication response
// (which comes in as a HTTP request from the OpenID provider)
ParameterList openidResp = new ParameterList(request.getParameterMap());

// retrieve the previously stored discovery information
DiscoveryInformation discovered = (DiscoveryInformation) session.getAttribute("discovered");

// extract the receiving URL from the HTTP request
StringBuffer receivingURL = request.getRequestURL();
String queryString = request.getQueryString();

if (queryString != null && queryString.length() > 0)
   receivingURL.append("?").append(request.getQueryString());

// verify the response
VerificationResult verification = manager.verify(receivingURL.toString(), openidResp, discovered);

// examine the verification result and extract the verified identifier
Identifier verified = verification.getVerifiedId();

if (verified != null)
    // success, use the verified identifier to identify the user
else
// OpenID authentication failed



查看完整的Sample Consumer代碼:http://code.google.com/p/openid4java/wiki/SampleConsumer

結(jié)論

OpenID
是通過標(biāo)準(zhǔn)化認(rèn)證方式由互聯(lián)網(wǎng)社區(qū)催生出來的綜合效應(yīng)。它完成了和SAML這些現(xiàn)存協(xié)議同樣的事情,但它卻易于安裝、部署和維護(hù)。任何具備基本編程技能的人都能夠在其現(xiàn)有或者新建的網(wǎng)站上部署OpenID技術(shù)。

OpenID
已經(jīng)獲得愈加廣泛的使用。我們有理由相信,在不久之后的公司之間、像GoogleYahoo這樣的門戶站點(diǎn)之間都將支持此技術(shù),OpenID技術(shù)將隨著互聯(lián)網(wǎng)社區(qū)的發(fā)展而成為網(wǎng)站之間通用的主流認(rèn)證方法。
關(guān)于OpenID技術(shù)的更多信息,請(qǐng)?jiān)L問:http://openid.net/

原文(《Using OpenID)作者簡介

Justen Stepka
Atlassian的Crowd單點(diǎn)登錄安全系統(tǒng)的項(xiàng)目管理者,同時(shí)也是OpenID4Java項(xiàng)目的提交者(committer)。Crowd團(tuán)隊(duì)目前正在開發(fā)實(shí)現(xiàn)OpenID2.0規(guī)范的服務(wù)站點(diǎn)。Justen從前是AuthentisoftCEO,該公司于2006年被Atlassian收購。

Shihab Hamid
是在Atlassian工作的工程師,他主要負(fù)責(zé)用Crowd產(chǎn)品在OpenID集成方面的設(shè)計(jì)和開發(fā)。同時(shí)也是OpenID4Java項(xiàng)目的提交者。

相關(guān)資料

        ? OpenID
官方網(wǎng)站:http://openid.net/
        ? OpenID
工作過程:http://openid.net/about.bml
        ? OpenID4Java
項(xiàng)目主頁:http://code.google.com/p/openid4java/wiki/ProjectHome_zh_CN
        ?
下載OpenID4Javahttp://code.sxip.com/openid4java/
        ?
支持OpenID的各種代碼庫:http://www.openidenabled.com/
        ?
目前支持OpenID的主要站點(diǎn):http://iwantmyopenid.org/bounty/sponsors


投票評(píng)分(記入本貼作者的專家分)

     非常好 還行 一般 扔雞蛋          投票總得分:  / 投票總?cè)舜?span lang="EN-US">:  

用戶評(píng)論列表

#0000 author: 000 submitTime: 2006-00-00 12:59

#1 評(píng)論作者: 5452 發(fā)表時(shí)間: 2007-09-21 02:33 下午

對(duì)他的商業(yè)前景感興趣

#2 評(píng)論作者: fellix 發(fā)表時(shí)間: 2007-09-23 12:12 下午

好像很不錯(cuò)的樣子
sun搞的netbean6有建設(shè)性的多。

#3 評(píng)論作者: from_hell 發(fā)表時(shí)間: 2007-11-19 07:58 下午

very good very powerful.

#4 評(píng)論作者: tedeyang 發(fā)表時(shí)間: 2007-12-09 04:14 下午

個(gè)人隱私怎么保證?
認(rèn)證服務(wù)器將知道用戶的所有訪問記錄。

#5 評(píng)論作者: crazyloong 發(fā)表時(shí)間: 2007-12-23 04:42 下午

個(gè)人隱私怎么保證?
認(rèn)證服務(wù)器將知道用戶的所有訪問記錄。
------------------------------------------------------------
認(rèn)證服務(wù)器可以自己架設(shè)
如果你非常在意這些的話,你完全可以自己架設(shè)一個(gè)認(rèn)證服務(wù)器

#6 評(píng)論作者: layo 發(fā)表時(shí)間: 2008-02-19 10:24 上午

如果它出現(xiàn)在WEB之前,那么用它來規(guī)范認(rèn)證沒問題.但現(xiàn)在每個(gè)網(wǎng)站都有獨(dú)立的用戶群,他們會(huì)犧牲所有用戶信息而讓用戶重新注冊(cè)OPENID?很多問題還需要解決...其實(shí)多年前我也想到過.

#7 評(píng)論作者: jackpowell 發(fā)表時(shí)間: 2008-02-27 11:51 上午

試用了一下,openid提供商不會(huì)與各請(qǐng)求網(wǎng)站共享任何資料,所以請(qǐng)求網(wǎng)站還是會(huì)要求用戶輸入一些資料,比如EMAIL或者姓名、地址之類的,還是比較繁瑣。
前景堪憂,哪個(gè)網(wǎng)站會(huì)不想用戶的資料?利益出發(fā)點(diǎn)不一樣,比較難搞!

#8 評(píng)論作者: xiaobao 發(fā)表時(shí)間: 2008-03-06 11:25 下午

我覺得前景還是不錯(cuò)的,因?yàn)橛脩羰侵辽系?span lang="EN-US">,如果大多數(shù)用戶更愿意使用OpenID的話,那么網(wǎng)站也只好支持OpenID.OpenID只是使得網(wǎng)站的用戶上網(wǎng)更方便快捷,換句話說,是讓支持OpenID的網(wǎng)站更受歡迎.

#9 評(píng)論作者: xiaobao 發(fā)表時(shí)間: 2008-03-06 11:25 下午

我覺得前景還是不錯(cuò)的,因?yàn)橛脩羰侵辽系?span lang="EN-US">,如果大多數(shù)用戶更愿意使用OpenID的話,那么網(wǎng)站也只好支持OpenID.OpenID只是使得網(wǎng)站的用戶上網(wǎng)更方便快捷,換句話說,是讓支持OpenID的網(wǎng)站更受歡迎.

#10 評(píng)論作者: fox 發(fā)表時(shí)間: 2008-04-25 02:00 下午

這里存在一個(gè)問題,只用openID登錄,你怎么樣保證別的人不會(huì)盜用你的帳號(hào)?也就是當(dāng)你用openID登錄以后,那如果別人也用你的openID去登錄,他能登錄進(jìn)去嗎?

#11 評(píng)論作者: simon 發(fā)表時(shí)間: 2008-08-06 03:21 下午

謝謝樓主,我是個(gè)OpenID的初學(xué)者,你的文章對(duì)我?guī)椭艽蟆?span lang="EN-US">
根據(jù)你提供的Link,我現(xiàn)在一個(gè)在Sample中實(shí)現(xiàn)了認(rèn)證這個(gè)過程,
但是我們的系統(tǒng)需要用戶的email地址作為關(guān)鍵字段,
現(xiàn)在我不知道該如何從OpenID Provider中取出用戶注冊(cè)的email資料,
請(qǐng)問樓主可知道如何解決。

#12 評(píng)論作者: Good 發(fā)表時(shí)間: 2008-09-21 04:42 下午

a very good news

#13 評(píng)論作者: lily 發(fā)表時(shí)間: 2008-11-16 06:36 下午

我也關(guān)心10樓的問題,準(zhǔn)備就這個(gè)寫個(gè)論文.研究中...

 

posted on 2009-01-05 00:18 肥仔 閱讀(2749) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Web-后臺(tái)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品99一区二区| 亚欧美中日韩视频| 欧美另类人妖| 欧美激情一区在线观看| 欧美日韩国产系列| 欧美日韩精品久久久| 欧美日韩国产91| 国产精品福利在线观看| 国产情侣久久| 亚洲国产小视频| 亚洲精品国产拍免费91在线| 日韩视频免费看| 亚洲欧美日韩区| 久久综合伊人77777| 免费日韩成人| 亚洲少妇自拍| 久久久久在线| 国产精品成人免费| 激情综合久久| 亚洲欧美日本日韩| 亚洲电影第1页| 91久久嫩草影院一区二区| 夜夜嗨av一区二区三区四季av| 亚洲人成网站影音先锋播放| 亚洲一区二区三区四区视频| 亚洲天堂免费观看| 蜜臀a∨国产成人精品| 噜噜噜躁狠狠躁狠狠精品视频| 欧美精品色网| 久久国产乱子精品免费女| 欧美一区二区成人| 欧美视频一区二区在线观看| 亚洲激情网址| 一区二区精品在线| 亚洲一级特黄| 久久久久www| 国产亚洲观看| 欧美一区二区三区视频在线观看| 欧美福利小视频| 国内综合精品午夜久久资源| 99国产精品久久久久久久成人热| 亚洲精品看片| 欧美在线观看视频| 久久久91精品国产一区二区精品| 亚洲丶国产丶欧美一区二区三区| 欧美伊人久久久久久午夜久久久久 | 一本色道婷婷久久欧美| 久久九九热re6这里有精品| 亚洲二区精品| 欧美在线999| 欧美激情亚洲自拍| 欧美在线免费一级片| 国产精品久久久久久久久久ktv| 亚洲天堂av高清| 亚洲欧美在线一区二区| 久久精品视频在线观看| 亚洲精品久久在线| 麻豆精品在线视频| 狠狠干成人综合网| 久久精品夜夜夜夜久久| 亚洲欧美在线x视频| 国产精品国产三级国产普通话三级 | 欧美成人精精品一区二区频| 午夜亚洲性色福利视频| 欧美性淫爽ww久久久久无| 一本久道久久综合婷婷鲸鱼| 亚洲国产精品专区久久| 国产精品wwwwww| 最新亚洲激情| 亚洲最新在线| 国产亚洲一区精品| 久久免费99精品久久久久久| 亚洲欧美日韩一区二区三区在线观看 | 一本色道久久综合狠狠躁篇怎么玩| 欧美专区第一页| 亚洲深夜av| 国产精品一区二区久久精品| 欧美一区二区三区四区在线观看 | 欧美成人官网二区| 亚洲九九精品| 夜夜夜久久久| 国产日韩av一区二区| 久久免费视频一区| 欧美成人精品激情在线观看| 日韩亚洲国产精品| 亚洲私人影院在线观看| 国产一区二区日韩| 欧美激情五月| 国产精品白丝黑袜喷水久久久| 欧美制服第一页| 蜜月aⅴ免费一区二区三区| 亚洲天堂av高清| 久久免费高清视频| 亚洲天堂激情| 久久夜色精品国产欧美乱| 久久资源在线| 亚洲日本欧美| 在线亚洲激情| 一区免费观看视频| 99这里只有精品| 一区福利视频| 亚洲欧美另类在线| 亚洲美女av电影| 久久精品30| 亚洲欧美日韩专区| 麻豆成人小视频| 久久不射中文字幕| 欧美日韩免费观看一区| 看欧美日韩国产| 国产精品久久久久久久久久免费| 久久亚洲国产成人| 国产精品不卡在线| 亚洲国产另类精品专区| 黑人极品videos精品欧美裸| 亚洲国产精品va| 午夜精品久久| 亚洲成人在线网站| 午夜精品av| 亚洲在线视频观看| 欧美成人在线免费观看| 久久米奇亚洲| 国产欧美三级| 亚洲一二三级电影| 一区二区三区国产精品| 免费在线日韩av| 你懂的视频欧美| 狠狠色丁香婷婷综合影院| 亚洲综合日韩在线| 亚洲在线一区| 欧美视频你懂的| 亚洲清纯自拍| 亚洲精品一区二区三区福利| 久久亚洲欧美国产精品乐播| 久久久久久久久久看片| 国产精品一区亚洲| 亚洲一区欧美二区| 亚洲欧美在线一区| 国产精品一区二区你懂得| 一本色道久久综合亚洲精品不 | 亚洲一区二区三区中文字幕在线| 欧美成人一区二区三区| 亚洲精品你懂的| 一区二区在线观看av| 亚洲欧美日韩国产一区| 亚洲欧美日韩国产一区| 国产精品久久久99| 亚洲专区欧美专区| 久久精品最新地址| 精品动漫av| 免费影视亚洲| 99天天综合性| 欧美亚洲视频一区二区| 国产午夜精品久久| 久久精品夜色噜噜亚洲a∨| 久久视频精品在线| 最新国产の精品合集bt伙计| 欧美国产一区二区在线观看 | 香蕉久久国产| 久久综合九色综合欧美就去吻| 一区二区三区在线视频免费观看| 久久看片网站| 亚洲日韩欧美一区二区在线| 亚洲在线播放| 国内自拍视频一区二区三区| 美女视频黄a大片欧美| 亚洲人成小说网站色在线| 亚洲午夜激情在线| 国产一二三精品| 免费日韩精品中文字幕视频在线| 亚洲精品视频一区| 欧美在线影院| 99视频热这里只有精品免费| 国产精品裸体一区二区三区| 欧美在线首页| 日韩视频在线永久播放| 久久久99国产精品免费| 亚洲精品系列| 国产亚洲精品久久飘花| 欧美国产日韩在线| 久久久国产一区二区三区| 亚洲美女毛片| 国产欧美日韩视频| 男人的天堂亚洲| 亚洲欧美日韩第一区| 亚洲国产cao| 久久精品72免费观看| 亚洲欧洲精品一区| 国产女精品视频网站免费| 欧美91精品| 欧美在线观看一二区| 亚洲美女视频| 亚洲第一精品影视| 久久综合999| 欧美在线一二三区| 亚洲综合三区| 一区二区三区毛片| 亚洲区一区二| 亚洲国产精品v| 亚洲成色www久久网站| 国产欧美日韩另类一区 |