【问题标题】:Client for Custom OpenId provider in Asp.Net web applicationAsp.Net Web 应用程序中自定义 OpenId 提供程序的客户端
【发布时间】:2013-01-28 16:04:28
【问题描述】:

我对 asp.net 比较陌生,如果这个问题听起来很愚蠢,我很抱歉。

我必须构建一个能够在 OpenId 自定义服务器上登录的 Asp.net Web 应用程序(即不包含在 DotNetOpenAuth 库中)。我正在使用 vs2010 和 .net framework 4.0。

经过多次搜索,我找到了解释它的这些帖子。

http://blogs.msdn.com/b/webdev/archive/2012/08/23/plugging-custom-oauth-openid-providers.aspx

How to use OpenID providers with unique identifier URLs in ASP.NET MVC4

http://blogs.msdn.com/b/webdev/archive/2012/08/15/oauth-openid-support-for-webforms-mvc-and-webpages.aspx

所有这些都引用 MVC 和一个名为 /App_Start/AuthConfig.cs 的目录/文件,您必须在其中注册新的提供程序才能使用库中内置的客户端。

通过其他搜索,我了解到此目录在 Asp.net Web 应用程序中不可用。

是否存在在 Asp.net Web 应用程序中实现相同结果的方法/解决方法?

您对如何在我的服务器中实现此类自定义客户端有任何建议/链接吗?

谢谢 stmod


感谢您的帮助。 在您发表评论后,我回到提供商要求澄清,但到目前为止,他们只能提供该链接。 所以我尝试在 Java 中管理它,我使用 openid4java 库和以下代码来完成它:

URL u = new URL("https://logint2.idm.toon.sul.t-online.de/gcp-web/login/10000112/");

Identifier i = new MyIdentifier(); 
*//myIdentifier is my implementation of interface openid4java.discovery.Identifier and returns* "http://specs.openid.net/auth/2.0/identifier_select"

DiscoveryInformation discovered = new DiscoveryInformation(u,i);

AuthRequest authReq = manager.authenticate(discovered, returnToUrl);

使用此代码(以及用于管理响应的其他代码)我可以正常工作。

我现在正在尝试将其应用于我的 dot.net 解决方案。

您能帮我编写让 DotnethOpenauth 与此端点一起工作的代码吗?

我想我必须像在 Java 中那样重写 Identifier 类,但我被卡住了。

感谢 stmod

【问题讨论】:

    标签: asp.net web-applications client openid dotnetopenauth


    【解决方案1】:

    为您的 ASP.NET Web 应用程序添加 OpenID 依赖方支持实际上非常简单,并且不需要 AuthConfig.cs 文件。如果您使用 Web 表单,最简单的方法是将 OpenIdLogin 控件拖放到您的 Web 表单上。如果您使用 MVC,只需编写几行代码,您可以查看 the dotnetopenauth .zip download from SourceForge 中包含的 OpenIdRelyingPartyMvc 示例,了解如何完成。

    【讨论】:

    • 嗨 Andrew,你是对的,我做到了,但在 asp.net 依赖方中,你发现 request = openid.CreateRequest(openidIdentifier) 仅支持众所周知的标识符,例如 google。我需要为自定义依赖方服务器(即德国电信)构建一个客户端,并且在链接中描述的过程中,他们说使用 AuthConfig.cs 将新提供者添加到您可以通过 openid.CreateRequest(openidIdentifier) 调用的提供者集中
    • 你从哪里得到 CreateRequest 只接受众所周知的标识符的想法?相反:它接受任何有效的 OpenID,因此公司为此设置的 OpenID Provider 可以正常工作,只要它们遵循 OpenID 协议。 DNOA 也支持构建提供程序,因此如果您使用 ASP.NET 构建提供程序,我建议在两端使用 DNOA。
    • 首先,感谢您的帮助。我从浏览许多帖子中得到了这个想法,但正如我所说,我相对较新。事实上,如果我将它用作链接,这个 url logint2.idm.toon.sul.t-online.de/gcp-web/login/10000112/… 有效,但如果我将它用作标识符则无效
    • 如果删除查询参数也是如此
    • 那是因为您的链接不是 OpenID 标识符。这是一个(格式错误的)OpenID checkid_setup 请求。您不能将该 URL 传递给任何 OpenID RP 并让它工作。相反,您必须找出导致该 URL 形成的标识符,并将该标识符输入 RP,以便 RP 可以制定自己的与该 URL 相似的 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多