首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net MVC 5的自定义认证框架

asp.net MVC 5的自定义认证框架
EN

Stack Overflow用户
提问于 2014-11-24 21:37:06
回答 1查看 706关注 0票数 0

我们正在为多个MVC应用程序构建一个框架,这些应用程序应该处理这些应用程序的身份验证。我们的要求如下:

  1. 我们有一个身份验证web服务(这是基于soap的旧服务)。框架应该使用此服务对用户进行身份验证,并使用可配置服务URL进行身份验证。
  2. 将来,我的组织计划实现一个单一的登录(我们有多个用户源- AD、数据库等),这个框架应该可以配置为使用SSO。

如何在MVC 5中实现这一点?我应该使用AuthetnicationFilters吗?在这种情况下,asp.net身份将扮演什么样的角色呢?

EN

回答 1

Stack Overflow用户

发布于 2018-10-11 08:48:27

身份验证/授权非常复杂,许多用户编写的方案很容易被黑客攻击。使用经过尝试和信任的框架(如IdentityServer或OAuth)。就连Google在Google+中的认证方案也错了,并且决定完全撤销它。

由于解决方案可能需要迁移到云,所以最好确保下面的功能不需要修改就可以使用Microsoft标识表。稍后可以更改它们,尽管身份系统的构建并不是为了轻松地处理AspNetUsers以外的表中的表更改,而且在构建实体框架正确运行的工作上下文时,您需要非常精确。

身份验证(如果存在,获取用户的信息(例如解码用户的cookie,如果存在)

质疑(用户请求身份验证(例如显示登录页面)

SignIn (将用户的信息保存在某个地方(例如编写cookie)

SignOut (删除用户的持久化信息(例如删除cookies)

禁止(拒绝对未经身份验证的用户或经身份验证但未经授权的用户(例如显示“未授权”页)或经验证但未经授权的用户(例如显示“未授权”页)资源的访问)

使用一个新项目启动isVisual Studio 2017,并将身份验证设置为单个用户帐户。使用NuGet安装Microsoft.AspNetCore.Identity.UI,然后使用Scaffold实现上述功能的剃须刀页面(右键单击项目,并选择添加=>新支架项目=>标识)。记住,类方法是通过在控制器中添加授权来保护的。将此项目与没有标识的项目进行比较,只使用cookie。重要的是使您的实现尽可能可插拔,例如使用Microsoft (因为您将访问专门为标识而产生的表),因此将使用ASP.NET,ASP.NET Core。

至少,您需要2个未受保护的端点,以便在登录组件和将要签名的应用程序中访问Authenticate()方法。在受保护组件中签名时,可以通过共享cookie访问组件,或者在授权头或url中传递令牌。应用程序可以从cookie/令牌中提取信息,并检查用户是否在AspNetUsers表中,并允许访问或重定向到登录页或拒绝访问的页面。登录中的Authenticate()方法需要创建cookie或令牌(或两者兼而有之)。应用程序中的Authenticate()方法需要读取和验证这些信息。Microsoft标识支持下列方案,请选择。

曲奇饼

Facebook

谷歌

内部

JwtBearer

MicrosoftAccount

OAuth

OpenIdConnect

推特

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27114619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档