簡體   English   中英

DotNetOpenAuth:如何實現一個簡單的OpenId提供程序?

[英]DotNetOpenAuth: How to implement a simple OpenId provider?

每個OpenId提供商都有一個提供商Url(例如Google: https//www.google.com/accounts/o8/id

使用OpenIdRelyingParty.CreateRequest我成功地將用戶重定向到Google提供商Url並接收提供商回調。 一切都很好。

現在我正在嘗試實現我自己的簡單OpenId提供程序(我希望在我的示例中充當Google)。 DotNetOpenAuth有一個名為OpenIdProviderWebForms的提供程序演示。 在過去的4或5個小時內,我一直嘗試使用我設法在Google上連接的相同演示連接到它。 第一:我不清楚我應該調用哪個URL。 我嘗試了所有Urls(server.aspx,provider.ashx ...),並且所有這些都觸發​​了異常“找不到OpenID端點”。 所有配置似乎都很好。

如何實現簡單的OpenId提供程序? 我應該在OpenRelyingParty.CreateRequest調用哪個URL?

首先讓我們建立一些術語:

User-supplied identifier是用戶實際鍵入的字符串(或通過單擊RP上的預定義按鈕觸發),以觸發OpenID發現。 它沒有規范化,並且永遠不應該用於表示數據庫中的用戶,因為它不安全或不唯一,但它是一個必要的起點。 對此標識符的發現可以是claimed identifierOP Identifier 示例:yahoo.com,myopenid.com和andrewarnott.myopenid.com

Claimed Identifier是用戶“控制”或用作其身份的OpenID標識符。 它可能是也可能不是 URL(它可能是XRI)。 來自OP的肯定斷言將始終是聲明的標識符(即使以OP標識符開始發現)。 示例: https//andrewarnott.myopenid.com/

OP Identifier或“OpenID提供商標識符”是RP可以執行發現以開始identifier select流的OpenID標識符,其中RP還不知道用戶的聲明標識符將是什么。 例如: https://me.yahoo.com/http://www.myopenid.com/https://www.google.com/accounts/o8/id

OP Endpoint是RP將用戶重定向到的實際URL,以便對用戶進行身份驗證,並用於建立共享關聯或對使用OP私有關聯的斷言執行直接驗證。 示例: http://localhost/server.aspx,http ://localhost/provider.ashx,https : //www.google.com/accounts/o8/ud (請注意ud結尾而不是id)

因此,在所有背景下,您的OpenIdRelyingParty.CreateRequest調用應該接收用戶提供的標識符,該標識符也可以是聲明的標識符或OP標識符。 應該是OP端點。 例如,您可以傳入:

openIdRelyingParty.CreateRequest("http://localhost/sampleop/")

要么

openIdRelyingParty.CreateRequest("http://localhost/user.aspx?username=bob")

對於DotNetOpenAuth MVC示例,要使用的Open Id標識符URL為http://localhost:4864/User/Identity (其中OpenIdProviderMvc配置為在localhost上的端口4864上運行)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM