【问题标题】:"Generic" OpenID in ASP.NET MVC 5ASP.NET MVC 5 中的“通用”OpenID
【发布时间】:2013-10-29 20:43:11
【问题描述】:

我试用了 ASP.NET MVC 5 中的新身份验证功能(我之前使用过DotNetOpenAuth)。

我了解内置的 Google 提供程序使用 OpenID [1](并且工作正常),但我想在身份验证时使用我自己的 OpenID 提供程序。

不幸的是,我无法通过 ASP.NET MVC 5 的开箱即用功能找到一种简单的方法来完成此任务。我查看了 Microsoft.Owin.Security.Google 的源代码,基于此,我似乎很可以添加新的 OpenID 提供程序。

是否有更简单的(可能已经内置)方法可以将新的 OpenID 提供程序添加到 ASP.NET MVC 5 应用程序?还是我必须从头开始编写一个(新的 Owin 中间件)?

[1]http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on
[2]http://www.symbolsource.org/MyGet/Metadata/aspnetwebstacknightly/Project/Microsoft.Owin.Security.Google/2.0.1-rtw1-20924-641-dev/Release/.NETFramework,Version=v4.5/Microsoft.Owin.Security.Google

【问题讨论】:

    标签: openid asp.net-mvc-5


    【解决方案1】:

    我也有同样的情况,我认为答案是“不”。

    关键类是实现 OWIN 后端处理程序的 Microsoft.Owin.Security.Google.GoogleAuthenticationHandler。在其 AuthenticateCoreAsync 中硬编码对https://www.google.com/accounts/o8/ud 的调用,以及在 ApplyResponseChallengeAsync 中硬编码 Attribute eXchange 请求。如果有更好的方法(即 OpenID 基类),我假设他们肯定会使用它而不是对这两个位置进行硬编码。我假设微软由于时间安排或需求不足而没有使其通用。

    我认为开源通用 OpenID OWIN 中间件将是一个很棒的 NuGet 包。

    【讨论】:

    • 谢谢。我想我会在接下来的几周里保持懒惰并坚持使用 DotNetOpenAuth,也许在那之前有人会构建一个 OpenId 中间件;)
    • 我通过将 google.com/accounts/o8/ud 更改为 open.login.yahooapis.com/openid/op/auth 成功地让 Google 代码为 Yahoo 工作。我得到了与 DotNetOpenAuth 为该帐户提供的相同声称的标识符,所以看起来代码概括得很好。我认为唯一具有挑战性的一点是根据提供者将提供的内容来概括属性交换过程,就像 DNOO 所做的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2015-08-09
    • 2012-01-13
    • 2022-01-04
    相关资源
    最近更新 更多