Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表单身份验证_C#_.net_Asp.net_Authentication - Fatal编程技术网

C# 表单身份验证

C# 表单身份验证,c#,.net,asp.net,authentication,C#,.net,Asp.net,Authentication,我已经编程很长时间了,但我不是世界上最有经验的.Net开发人员。我最近接了一个项目,该项目正在为他们的网站使用表单身份验证。我首先在.NET1.1中研究了表单身份验证,当时它有一些限制,使我决定不将其作为身份验证的主要形式 该项目要求用户具有角色(我理解表单身份验证支持)和组成员身份。例如,“用户A”是“公司A”的“管理员”。表单身份验证现在是否支持这种用户结构 我还读到表单身份验证以明文形式发送密码。此客户端不使用SSL。这是真的吗 当前代码库使用表单身份验证,但不支持组(它支持角色)。因此,

我已经编程很长时间了,但我不是世界上最有经验的.Net开发人员。我最近接了一个项目,该项目正在为他们的网站使用表单身份验证。我首先在.NET1.1中研究了表单身份验证,当时它有一些限制,使我决定不将其作为身份验证的主要形式

该项目要求用户具有角色(我理解表单身份验证支持)和组成员身份。例如,“用户A”是“公司A”的“管理员”。表单身份验证现在是否支持这种用户结构

我还读到表单身份验证以明文形式发送密码。此客户端不使用SSL。这是真的吗

当前代码库使用表单身份验证,但不支持组(它支持角色)。因此,我需要修改表单身份验证以支持所需的组,或者删除表单身份验证并使用我通常使用的身份验证框架。如果表单身份验证确实支持组并且足够安全,那么我应该坚持使用它。如果表单身份验证存在安全问题或不支持组,那么我需要删除该形式的身份验证


我在互联网上搜索了一篇正反两方面的文章,但是运气不好。你们怎么看?

表单身份验证不会以明文形式发送密码。只要您确保登录/pwd在接收时受到保护(即使用https…ssl),其中就没有安全风险


如果您真的需要这样做授权,您可以依靠表单身份验证来。。。身份验证,并使用您自己的机制进行授权。

Forms Auth是您追求的最佳选择。它确实支持角色,但不支持组。但是,它确实内置了对active directory集成的支持,如有必要,您可以使用它来解决组问题。就我个人而言,我会坚持你所拥有的,并了解更多。如果您想使用表单模式Auth-Auth-Auth-Mead,我会考虑使用现有窗体AuthDistabor建立群组支持。 我强烈建议观看Microsoft关于表单身份验证的视频。你会发现它的使用非常简单。诚然,它是一个相当健壮和灵活的框架,您无法将其组合在一起。你会想仔细阅读并观看这些视频。但是,当您熟悉它时,您会发现它是安全的、受支持的,并且被开发社区很好地接受


Yikes,我刚刚又看了一遍你的问题,你说他们不使用SSL。这个网站需要多安全?对我来说,这将是我的第一个任务是转移到SSL

数据库不存储它使用md5或其他散列方式的纯密码文本。。。我知道他们将2个散列字符串相互匹配,以验证他们是转换字符串客户端还是服务器端我不确定..可能是浏览器。。。如果您正在考虑使用ssl,我认为您不应该使用ASP.net窗体身份验证。。。是时候让你自己进行基于表单的身份验证,并进行一些广告挖掘了

表单身份验证将不支持本地组。我们所做的是使用它来“验证”用户(证明他们是谁),然后我们使用我们自己的数据存储来“授权”用户(描述他们可以做什么)。

为了满足您的要求,您将使用表单验证。如果应用程序使用的是SQL Server数据库,则可以将其用作成员资格提供程序来实现此目的

可以作为一个很好的开始参考

关于在连接不安全时以明文形式发送密码的问题

实际上,发送的密码通常是散列的(算法将取决于选择的成员资格提供者),这就是最终存储的密码。 当然,如果连接不安全,则可以检索哈希密码并将其用于黑客攻击应用程序,但至少可以消除普通用户密码被盗并用于访问其他服务的可能性(如您所知,许多人在多个服务中使用同一密码)。所以为了安全起见,您确实需要在这里使用https


作为警告,我远非该领域的专家,但最近我遇到了一个类似的问题,您正在描述,所以我想您可能会发现其中一些有用。

感谢您的所有投入。尽管我认为我将继续在其他项目中使用我自己的身份验证库,但我认为对这个客户机最好的做法是坚持使用他们已经部分到位的表单身份验证

虽然我使用Visual Studio和.Net平台进行开发,但我并不总是喜欢用“Microsoft”的方式做事。我发现很多时候,如果你知道自己在做什么,“微软”的方式会带来很多开销,而这些开销是可以避免的


再次感谢您的输入。

如果您不使用SSL,则必须通过网络以明文形式传递密码。因此需要SSL

.Net窗体身份验证将正确散列密码并将其存储到db,但这不会通过网络保护凭据。但这适用于所有web框架


至于这一部分,您必须在应用程序中实现这一点,或者找到一些库来帮助您。

不,我可以使用2.0或3.5。只是在我最初决定不喜欢1.1版中的表单身份验证之后,我还没有回去学习表单身份验证。从我所读到的来看,它现在看起来更好了,但我想我应该先了解一下对它的看法;但是,我认为不管怎样,它都会作为计划文本发送到服务器。我想我可以使用表单身份验证,然后根据身份验证提供的ID进行我自己的授权