HTML5技术

[ASP.NET MVC] ASP.NET Identity登入技术应用 - Clark159

字号+ 作者:H5之家 来源:博客园 2016-02-18 17:00 我要评论( )

[ASP.NET MVC] ASP.NET Identity登入技术应用情景 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证、授权等等机制。在ASP.NET Identity里除了提供最基础的:用户注册、密码重设、密码验证等等基础功能之外,也提供了进阶的:Cookie登入、Fac

[ASP.NET MVC] ASP.NET Identity登入技术应用 情景

ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证、授权等等机制。在ASP.NET Identity里除了提供最基础的:用户注册、密码重设、密码验证等等基础功能之外,也提供了进阶的:Cookie登入、Facebook登入、Google登入等等进阶功能。套用这些功能模块,让开发人员可以快速的在ASP.NET站台上,提供验证、授权等等机制。

情景01

但是在企业中,开发人员常常会遇到一种开发情景就是:企业里已经有一套既有身分系统,这个系统提供了:用户注册、密码重设、密码验证等等功能,新开发的ASP.NET站台,必须要串接既有身分系统来提供验证、授权等等机制。这个既有身分系统,可能是大卖场会员管理系统、也可能是银行帐户管理系统,它们的注册审核机制有一套严谨并且固定的流程。

在这样的开发情景中,开发人员可能会选择透过程序接口、OAuth机制等等方式,将既有身分系统整合成为ASP.NET Identity的验证提供者。这样两个系统之间的整合,除了有一定的高技术门坎之外。在整合之后,两个系统之间互相重迭的功能模块,操作流程的冲突该如何处理,也是一个需要额外考虑的复杂问题。

情景02

一个好消息是,ASP.NET Identity拥有高度模块化的软件架构。在ASP.NET Identity中,将Cookie登入、Facebook登入、Google登入等等功能模块,切割为独立的ASP.NET Security套件。开发人员完全可以直接套用ASP.NET Security套件,快速整合既有的身分系统,就可以提供ASP.NET站台所需的验证、授权等等机制。本篇文章介绍如何套用ASP.NET Security来整合既有身分系统,用以提供ASP.NET站台所需的验证、授权等等机制。主要为自己留个纪录,也希望能帮助到有需要的开发人员。

ASP.NET Security - GitHub

情景03

范例

范例程序代码:下载地址

开发

开始套用ASP.NET Security之前,先建立一个空白的MVC项目,来提供一个新的ASP.NET站台。并且变更预设的Web服务器URL为:「:41532/」,方便完成后续的开发步骤。

开发01

开发02

再来在MVC项目里加入三个ASP.NET Security的NuGet套件参考:Microsoft.AspNet.Authentication、Microsoft.AspNet.Authentication.Cookies、Microsoft.AspNet.Authentication.Facebook。

开发03

接着建立AccountController以及相关的View,用以提供登入页面,让使用者可以选择使用哪种模式登入系统。

public class AccountController : Controller { // Methods public IActionResult Login(string returnUrl = null) { // ViewData this.ViewData["ReturnUrl"] = returnUrl; // Return return View(); } }

再来在MVC项目内加入下列程序代码,用以挂载与设定后续要使用的两个CookieAuthenticationMiddleware。(关于程序代码的相关背景知识,请参阅技术剖析说明:ASP.NET Identity登入技术剖析)

public class Startup { public void ConfigureServices(IServiceCollection services) { // Authentication services.AddAuthentication(options => { options.SignInScheme = IdentityOptions.Current.ExternalCookieAuthenticationScheme; }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { // Authentication app.UseCookieAuthentication(options => { options.AuthenticationScheme = IdentityOptions.Current.ApplicationCookieAuthenticationScheme; options.AutomaticAuthenticate = true; options.AutomaticChallenge = true; options.LoginPath = new PathString("/Account/login"); }); app.UseCookieAuthentication(options => { options.AuthenticationScheme = IdentityOptions.Current.ExternalCookieAuthenticationScheme; options.AutomaticAuthenticate = false; options.AutomaticChallenge = false; options.LoginPath = null; }); } }

最后在MVC项目内,建立ExistingIdentitySystem这个类别用来仿真既有身分系统。为了方便理解系统,ExistingIdentitySystem里的PasswordSignIn(密码登入)、ExternalSignIn(第三方登入ex:FB登入)等方法都直接回传成功讯息,而GetUserById(取得使用者)这个方法则是直接回传固定的用户信息。(在正式环境开发时,上述方法可以实作为透过WebAPI、或是直接连通数据库等等方式,与既有身分系统取得相关信息。)

public class ExistingIdentitySystem { // Methods public ExistingUser GetUserById(string userId) { // Result var user = new ExistingUser(); user.Id = "Clark.Lab@hotmail.com"; user.Name = "Clark"; user.Birthday = DateTime.Now; // Return return user; } public bool PasswordSignIn(string userId, string password) { // Return return true; } public bool ExternalSignIn(string userId, string externalProvider) { switch (externalProvider) { case "Facebook": return true; default: return true; } } } public class ExistingUser { // Properties public string Id { get; set; } public string Name { get; set; } public DateTime Birthday { get; set; } } 开发 - Facebook Authentication

完成上述步骤后,接着着手开发Facebook验证。首先开发人员可以到Facebook开发者中心(https://developers.facebook.com/),注册一个新的APP账号。(测试用的Site URL为先前步骤定义的:「:41532/」)

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 如何在 ASP.NET Core 中发送邮件 - Savorboard

    如何在 ASP.NET Core 中发送邮件 - Savorboard

    2017-05-02 08:02

  • 十二个 ASP.NET Core 例子 - Savorboard

    十二个 ASP.NET Core 例子 - Savorboard

    2017-04-27 16:01

  • ASP.NET MVC5请求管道和生命周期 - 雪飞鸿

    ASP.NET MVC5请求管道和生命周期 - 雪飞鸿

    2017-04-24 08:04

  • ASP.NET Core MVC 源码学习:详解 Action 的激活 - Savorboard

    ASP.NET Core MVC 源码学习:详解 Action 的激活 - Savorboard

    2017-04-14 13:04

网友点评