当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《ASP.NET5WebAPI支持社交登录,个人帐户,帐户管理,授权屏幕和ASP.NET标识.它存在吗?》经验,为你挑选了1个好方法。

从本质上讲,这是对近两年前这个问题的更新,@ Pinpoint的AspNet.Security.OpenIdConnect.Server名声非常有帮助.

我会把咆哮放在最底层,让所有关心自己沉迷于沮丧的开发者凌晨四点亵渎的人.

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

一种非常流行的现代应用架构

使用令牌安全REST API

支持个人登录

支持社交登录

最新和最好的技术.NET的东西

ASP.NET 5(几乎 ......)

ASP.NET Identity(包含所有用户数据存储和精彩的策略)

MVC 6

通常,OAuth2可用于身份验证.

问题

ASP.NET曾经支持使用OAuth2创建令牌,但它不再支持,也不会支持,显然它不是很好.有一些帮助,但我仍然有点迷失如何将它与ASP.NET身份和新Authorize属性联系起来.

所以我的实际问题.

在这个波浪状,刮风,可怕的互联网上的任何地方都有样品,展示了以下内容:

基于ASP.NET 5/MVC 6的REST API,使用ASP.NET Identity和OAuth2保护,具有AccountController快速创建帐户并为社交登录或个人登录提供令牌,具有可爱的ASP.NET Identity用户存储以保持整洁,密码恢复以及一系列标准,现代帐户资料和授权屏幕以确认权限请求("XXX想要访问您的帐户,这样可以吗?"等)

(可选)客户端应用程序(我不关心它是WPF,Cordova,AngularJS,用汇编程序编写,还是运行在带有Meccano自动化测试的ZX81上),支持在社交和个人帐户中登录到REST API并得到一个很好的小令牌,像一个宝丽来一样在空中扇动

我发现有些事情是接近,接近和等等.但没有一个匹配.

据我所知,我不能使用ASP.NET 5的新策略授权IdentityServer3.我不能成为唯一想要这种架构的人,有人完成了这个吗?

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

胡言乱语

我已经离开授权的东西超过一年,但我回来了,男孩的事情发生了变化.而且它与OWIN,Katana,ASP.NET Identity,IdentityServer3,AspNet.Security.OpenIdConnect.Server相当混乱.似乎只有(虽然非常优秀)的侧面项目完全支持基于.NET的安全令牌服务器.通过"侧面项目",我的意思是对这些伟大的项目没有冒犯,只是没有任何微软和/或付费支持.

我想继续进行大量的开发,但我始终对身份验证的实现感到困惑,我无法想象这是一个不受欢迎的架构.

对我来说,这样一个标准的体系结构场景被微软如此巧妙地考虑在内似乎令人难以置信.

当我想在我的REST应用程序中实现登录时,我会发现自己颠倒过来,并且在一个混乱的交叉信息交响乐团中从里到外.

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



1> Kévin Chalet..:

在这个波浪状,刮风,可怕的互联网上的任何地方都有样品,展示了以下内容:

基于ASP.NET 5/MVC 6的REST API,使用ASP.NET Identity和OAuth2进行保护,使用AccountController快速创建帐户并为社交登录或个人登录提供令牌,并使用可爱的ASP.NET Identity用户存储来保持整洁,密码恢复和一系列标准,现代帐户资料和授权屏幕,以确认权限请求("XXX想要访问您的帐户,这可以吗?"等)

我目前正在开发一个名为OpenIddict的全新身份服务器:它基于ASP.NET身份3(ASP.NET 5附带),并在内部使用AspNet.Security.OpenIdConnect.Server来控制整个OIDC流.它旨在提供开始使用令牌身份验证的最简单方法,并且它与完整的.NET框架和新的.NET Core兼容.

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

它仍处于早期阶段,您需要使用ASP.NET 5/DNX RC2夜间构建才能使用它,但配置起来非常简单.你只需要调用AddOpenIddict()ConfigureServices并添加UseOpenIddict()Configure.您可以在GitHub存储库中找到更多信息.

public void ConfigureServices(IServiceCollection services) {
    services.AddMvc();

    services.AddEntityFramework()
        .AddSqlServer()
        .AddDbContext(options =>
            options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));

    services.AddIdentity()
        .AddEntityFrameworkStores()
        .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();
}

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有