本质上,这是对 this question 的更新。近两年前,AspNet.Security.OpenIdConnect.Server
的@Pinpoint 给出了非常有帮助的回答名声。
对于所有愿意沉迷于沮丧的开发人员凌晨 4 点的亵渎行为的人,我将把咆哮放在底部。
我正在开始一些新项目,出于我自己的原因,我想使用最新版本的 ASP.NET 技术(ASP.NET 5 vNext 和 MVC 6)开始工作。
一种非常流行的现代应用程序架构
最新和最伟大的技术 .NET 东西
通常 OAuth2 可用于身份验证。
问题
ASP.NET 曾经支持 creation of tokens with OAuth2 , 但是 it doesn't any more and isn't going to ,显然 it wasn't very good anyway .有some help ,但对于如何将其与 ASP.NET Identity 和新的
Authorize
结合起来,我仍然有点迷茫。属性。所以我的实际问题。
在这个波涛汹涌、多风、可怕的互联网上,是否有任何示例展示了以下内容:
AccountController
愉快地为社交登录或个人登录创建帐户和提供 token ,使用可爱的 ASP.NET 身份用户存储来保持整洁,密码恢复和一系列标准的现代帐户内容,以及用于确认权限请求的授权屏幕(“XXX想访问您的帐户,可以吗?”等)我发现了一些 close , closer和 so on .但没有一个匹配。
据我了解,我不能将 ASP.NET 5 的基于策略的新授权内容与
IdentityServer3
一起使用。 .我不可能是唯一想要这种架构的人,有人做到了吗?我觉得每次我来保护我的应用程序时,我都在发明轮子。
咆哮
我已经离开授权的东西一年多了,但我回来了,男孩的事情发生了变化。这一切都与 OWIN 混淆了。 , Katana , ASP.NET Identity , IdentityServer3 , AspNet.Security.OpenIdConnect.Server .似乎只有(尽管非常出色)的辅助项目可以完全支持拥有基于 .NET 的安全 token 服务器。通过“副项目”,我的意思是对这些伟大的项目没有冒犯,只是没有任何微软和/或付费支持。
我想进行大量的开发,但我总是在身份验证的实现上停滞不前,我无法想象这是一个不受欢迎的架构。
微软如此巧妙地考虑了这样一个标准的架构方案,这对我来说似乎太不可思议了。
当我想在我的 REST 应用程序中实现登录时,我发现自己在一个令人困惑的、嘈杂的交叉发射信息管弦乐队中颠倒过来。
如果有人想启动一个维护的、开源的模板解决方案,请告诉我。我厌倦了构建 REST 的开始,基于 token 的应用程序对于如此基本标准的东西来说是如此不必要的复杂。
最佳答案
Is there a sample anywhere on this wavy, windy, scary internet that demonstrates the following:
ASP.NET 5/MVC 6 based REST API, secured with ASP.NET Identity and OAuth2, with an AccountController merrily creating accounts and serving tokens for social logins or individual logins, with a lovely ASP.NET Identity user store to keep things tidy, password recovery and a range of the standard, modern account stuff, and authorisation screens to confirm permissions requests ("XXX would like to access your account, is this OK?" etc.)
我目前正在开发一个名为 OpenIddict 的全新身份服务器。 : 它基于 ASP.NET Identity 3 (随 ASP.NET 5 提供)并使用 AspNet.Security.OpenIdConnect.Server在内部控制整个 OIDC 流。它旨在提供开始使用 token 身份验证的最简单方法,并且它与完整的 .NET 框架和新的 .NET Core 兼容。
当然,它既不是由微软开发也不是由微软创立(请随意建议他们支持我们),但它符合您的要求:它带有一个控制授权体验(即同意书部分)的内部 Controller ,并依赖于
AccountController
您添加到您的应用程序以处理本地/外部身份验证过程。它仍处于早期阶段,您需要 ASP.NET 5/DNX RC2 每晚构建才能使用它 ,但它很容易配置。您只需调用
AddOpenIddict()
来自 ConfigureServices
并添加 UseOpenIddict()
来自 Configure
.您可以找到更多信息on the GitHub repository .public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders()
.AddOpenIddict(); // Add the OpenIddict services after registering Identity.
}
public void Configure(IApplicationBuilder app) {
app.UseIdentity();
// Add all the external providers you need before registering OpenIddict:
app.UseGoogleAuthentication();
app.UseFacebookAuthentication();
app.UseOpenIddict();
}
关于.net - ASP.NET 5 Web API 支持社交登录、个人帐户、帐户管理、授权屏幕和 ASP.NET 身份。它存在吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34215352/