Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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#_Sql_Service - Fatal编程技术网

C# 认证服务

C# 认证服务,c#,sql,service,C#,Sql,Service,我需要为我的C#应用程序创建一个授权系统,其工作方式如下:用户输入登录数据,密码转换为MD5,发送到服务器,在服务器上,特殊服务查找登录名,获取其密码并转换为MD5。然后比较这些MD并返回答案。有人有上述服务的例子或想法吗?1)记得在做散列之前加一些盐(md5) 2) 也许可以尝试切换到md5以外的东西,例如sha1 3) 根据服务的大小,您可以通过性能成本使系统稍微复杂化。例如,首先启动连接并从服务器获取某种令牌(随机数/短语/等等)。然后计算md5(md5(salt+pass)+令牌)之类的

我需要为我的C#应用程序创建一个授权系统,其工作方式如下:用户输入登录数据,密码转换为MD5,发送到服务器,在服务器上,特殊服务查找登录名,获取其密码并转换为MD5。然后比较这些MD并返回答案。有人有上述服务的例子或想法吗?

1)记得在做散列之前加一些盐(md5)

2) 也许可以尝试切换到md5以外的东西,例如sha1

3) 根据服务的大小,您可以通过性能成本使系统稍微复杂化。例如,首先启动连接并从服务器获取某种令牌(随机数/短语/等等)。然后计算md5(md5(salt+pass)+令牌)之类的md5,并将其发送到服务器。使用md5的原因是,您不应该以非散列形式存储用户密码。至少我不会这么做

建议:

  • 使用SSL/TLS和服务器证书,并确保在客户端中使用正确的证书

  • 在此基础上使用摘要身份验证。问题是,您需要在数据库中存储HA1哈希,或者以明文形式存储密码(或者能够解密存储的密码),才能生成HA1哈希。HA1散列是
    Md5(用户名+”:“+realm+”:“+password)
    其中realm是域

  • 您可以在windows服务中使用my webserver(LGPL)创建身份验证。它支持HTTPS和摘要身份验证


  • 您是否只需要服务器进行身份验证?使用ASP.NET身份验证的WCF服务可以很好地满足您的要求,但如果您在服务器端无事可做,则可能会有过大的杀伤力。是的,我只需要一个Windows服务来进行身份验证。可能需要一个客户?(请参阅)为什么需要窗口服务。?WCF服务可以为您做到这一点。事实上,您可以创建一个类库并在其中创建一个方法,除非您真的需要一个将由多个应用程序使用的服务,否则该方法也可以工作2kunal:有许多简单的方法可以使用SQL和C创建身份验证。因此,我想到的第一个方法是在本地将密码转换为MD5,然后通过登录在远程数据库中进行选择,获取密码并在本地比较密码对。但有一个巨大的问题:如果数据库被盗,我不会从哈希恢复密码。所以我看到的唯一方法是保持密码“原样”,并在服务器上转换用户的输入。这可以通过一个服务来完成。您有这样的应用程序的工作示例吗?我第一次尝试与服务部门合作。因此,没有任何实践来了解您所描述的担忧,但就目前而言,我没有。您认为将密码存储为明文是一个好主意吗?不,我也从未说过我这样做过。听起来数据库已经存在了,因此出现了不同的解决方案示例。