ASP.NET 5 Web API支持社交登录、个人帐户、帐户管理、授权屏幕和ASP.NET身份。它存在吗?

ASP.NET 5 Web API支持社交登录、个人帐户、帐户管理、授权屏幕和ASP.NET身份。它存在吗?,.net,rest,oauth-2.0,asp.net-core,access-token,.net,Rest,Oauth 2.0,Asp.net Core,Access Token,本质上,这是对近两年前的更新,由@Pinpoint ofAspNet.Security.OpenIdConnect.Serverfame给出了非常有用的回答 我将把所有那些喜欢沉迷于凌晨4点对一个沮丧的开发人员的亵渎的人的咆哮放在最下面 我正在开始一些新项目,出于我自己的原因,我想使用最新版本的ASP.NET技术(和MVC6)来开始 一种非常流行的现代应用程序体系结构 使用令牌保护RESTAPI 支持个人登录 支持社交登录 最新和最伟大的技术.NET的东西 ASP.NET 5(…) ASP

本质上,这是对近两年前的更新,由@Pinpoint of
AspNet.Security.OpenIdConnect.Server
fame给出了非常有用的回答

我将把所有那些喜欢沉迷于凌晨4点对一个沮丧的开发人员的亵渎的人的咆哮放在最下面

我正在开始一些新项目,出于我自己的原因,我想使用最新版本的ASP.NET技术(和MVC6)来开始

一种非常流行的现代应用程序体系结构
  • 使用令牌保护RESTAPI
  • 支持个人登录
  • 支持社交登录
最新和最伟大的技术.NET的东西
  • ASP.NET 5(…)
  • ASP.NET标识(及其所有和)
  • MVC6
通常,OAuth2可用于身份验证

问题 ASP.NET用于支持,但是,显然。有,但我仍然有点不知道如何将它与ASP.NET标识和新的
Authorize
属性联系起来

我的实际问题也是如此。

在这个波涛汹涌、风大、吓人的互联网上,有没有一个样本可以证明以下几点:
  • 基于ASP.NET 5/MVC 6的REST API,使用ASP.NET Identity和OAuth2进行保护,使用
    AccountController
    为社交登录或个人登录愉快地创建帐户和提供代币,使用可爱的ASP.NET Identity用户商店保持物品整洁,密码恢复和一系列标准、现代的帐户内容,以及确认权限请求的授权屏幕(“XXX想访问您的帐户,可以吗?”等)
  • (可选)客户端应用程序(我不在乎它是WPF、Cordova、AngularJS,是用汇编程序编写的还是在ZX81上运行的,可以自动进行测试),它支持登录REST API的社交和个人帐户,并像宝丽来一样获得一个漂亮的小标记
我发现了一些东西,而且。但是没有一个是匹配的

据我所知,我不能将ASP.NET 5新的基于策略的授权内容与
IdentityServer 3
一起使用。我不可能是唯一一个想要这种建筑的人,有人完成了吗

我觉得每次我来保护我的应用程序时,我都在发明一点轮子

咆哮 我已经离开授权部门一年多了,但我回来了,事情变了。这一切都与,,,相混淆。似乎只有(尽管非常优秀)的辅助项目完全支持基于.NET的安全令牌服务器。所谓“附带项目”,我的意思是对这些伟大的项目没有冒犯,只是没有微软和/或付费支持

我想开始一整套的开发工作,但在我无法想象的不受欢迎的体系结构中,身份验证的实现总是让我停滞不前

微软如此巧妙地考虑了这样一个标准的体系结构场景,这对我来说似乎太不可思议了

当我想在我的REST应用程序中实现登录时,我发现自己在一个混乱的、响亮的交火信息管弦乐队中倒立着

如果有人想启动一个维护的开源模板解决方案,请告诉我。我厌倦了开始构建REST,基于令牌的应用程序对于基本标准的东西来说太复杂了

在这个波涛汹涌、风大、吓人的互联网上,有没有一个样本可以证明以下几点:

基于ASP.NET 5/MVC 6的REST API,由ASP.NET Identity和OAuth2保护,AccountController愉快地创建帐户并为社交登录或个人登录提供代币,可爱的ASP.NET Identity用户存储保持整洁,密码恢复和一系列标准、现代的帐户内容,以及确认权限请求的授权屏幕(“XXX想访问您的帐户,可以吗?”等)

我目前正在开发一个全新的identity server,名为:它基于(ASP.NET 5附带的)并在内部用于控制整个OIDC流。它旨在提供开始令牌身份验证的最简单方法,并且与完整的.NET框架和新的.NET核心兼容

当然,它既不是由Microsoft开发的,也不是由Microsoft创建的(请随意建议他们支持我们),但它符合您的要求:它带有一个控制授权体验的内部控制器(即同意书部分)并依赖添加到应用程序中的
AccountController
来处理本地/外部身份验证过程

它仍处于早期阶段,您需要ASP.NET 5/DNX RC2夜间版本来使用它,但它很容易配置。您只需从
ConfigureServices
调用
AddOpenIddict()
,然后从
Configure
添加
使用openiddict()
。你可以找到更多的信息

public void配置服务(IServiceCollection服务){
services.AddMvc();
services.AddEntityFramework()
.AddSqlServer()文件
.AddDbContext(选项=>
使用SQLServer(配置[“数据:默认连接:连接字符串]);
服务.额外性()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders()
.AddOpenIddict();//注册标识后添加OpenIddict服务。
}
公共void配置(IApplicationBuilder应用程序){
app.UseIdentity();
//在注册OpenIddict之前添加您需要的所有外部提供程序:
app.UseGoogleAuthentication();
app.UseFacebookAuthentication();
app.UseOpenIddict();
}

谢谢@Pinpoint,我今天会好好看一看。它是否负责帐户管理,如密码重置等
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();
}