簡體   English   中英

沒有用戶發現的DotNetOpenAuth請求

[英]DotNetOpenAuth request without user discovery

我在使用ASP.Net(MVC)和DotNetOpenAuth庫進行OpenId登錄時遇到問題。 我必須連接到的OpenId提供程序為OP發現和用戶發現請求提供相同(靜態)響應。 因此,DotNetOpenAuth庫始終告訴我,身份驗證失敗。 該提供程序告訴我禁用用戶發現請求。

誰能幫我使用DotNetOpenAuth做到這一點? 我還沒有找到任何解決方案。

這是我連接到OpenId提供程序的方式:

var providerUrl= ConfigurationManager.AppSettings["OpenIdUrl"];
IAuthenticationRequest request = openId.CreateRequest(Identifier.Parse(providerUrl)); 
return request.RedirectingResponse.AsActionResult();

感謝您研究故障原因並已與OP進行通信。 那應該使事情更快。 OP操作員的OP配置錯誤。 從OpenID 2.0規范的第11.2節中,我們讀到:

如果聲明的標識符包含在聲明中,則必須由依賴方發現它,並且聲明中的信息必須存在於發現的信息中。 標稱標識符不得是OP標識符。

從最后一句話中,我們得到,從用戶標識符返回的“靜態” XRDS一定不能是OP標識符,而是它,並且從規范的其他地方,我們了解到OP標識符優先於用戶標識符(這是為什么在這里禁止成為OP標識符)。 OP應該修復它們從用戶標識符返回的XRDS文檔,以省略OP標識符服務端點。

請將以上內容轉發給任何有故障的OP,並請他們糾正錯誤。


不支持或不建議使用以下內容,因為它會導致您的依賴方偏離OpenID 2.0規范,從而違反了“絕不能”子句,並可能在您的應用程序中引入安全漏洞:

還有就是配置DotNetOpenAuth依賴方甚至對這些錯誤的有機磷農葯,上述免責聲明適用於這個方法的工作方式。 將此代碼段添加到您的web.config文件中:

<dotNetOpenAuth>
    <openid>
        <relyingParty>
            <security allowDualPurposeIdentifiers="true" />
        </relyingParty>
    </openid>
</dotNetOpenAuth>

如果您使用NuGet在您的Web應用程序中安裝DotNetOpenAuth,那就足夠了。 但是,如果您遇到有關無法識別的任何這些標簽的錯誤,則可能需要在web.config文件的頂部將其合並:

<configuration>
    <configSections>
        <section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true"/>
    </configSections>
</configuration>

暫無
暫無

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

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