13

我玩弄了 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

4

1 回答 1

5

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

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

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

于 2013-10-21T21:51:57.393 回答