我们正在为多个MVC应用程序构建一个框架,这些应用程序应该处理这些应用程序的身份验证。我们的要求如下:
如何在MVC 5中实现这一点?我应该使用AuthetnicationFilters吗?在这种情况下,asp.net身份将扮演什么样的角色呢?
发布于 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标识支持下列方案,请选择。
曲奇饼
谷歌
内部
JwtBearer
MicrosoftAccount
OAuth
OpenIdConnect
推特
https://stackoverflow.com/questions/27114619
复制相似问题