Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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#wpf应用程序中的Jwt身份验证_C#_Asp.net_Jwt - Fatal编程技术网

c#wpf应用程序中的Jwt身份验证

c#wpf应用程序中的Jwt身份验证,c#,asp.net,jwt,C#,Asp.net,Jwt,我两天前开始学习c#,所以我对.net框架没有太多经验。我想创建一个应用程序,用户可以输入用户名/密码组合,登录信息将发送到服务器进行验证。我曾想过通过使用PHP脚本以以下方式进行操作,但它并不是真正高效/安全的,因为每个人都可以访问该脚本 1)客户端->从用户处获取用户名/密码并将用户名发送到服务器 2) 服务器->找出用户是否在数据库中,并将随机数发回 3) client->Create a MD5 hash out the number,然后用密码MD5+numberMD5\创建一个MD5

我两天前开始学习c#,所以我对.net框架没有太多经验。我想创建一个应用程序,用户可以输入用户名/密码组合,登录信息将发送到服务器进行验证。我曾想过通过使用PHP脚本以以下方式进行操作,但它并不是真正高效/安全的,因为每个人都可以访问该脚本

1)客户端->从用户处获取用户名/密码并将用户名发送到服务器
2) 服务器->找出用户是否在数据库中,并将随机数发回
3) client->Create a MD5 hash out the number,然后用密码MD5+numberMD5\创建一个MD5,并将其发送回服务器(带有编号)
4) 服务器->从numberHash+passwordHash创建和MD5散列,并将其与客户端接收的散列进行比较

上述身份验证的另一个问题是,我想定期检查用户在登录后是否有权访问应用程序,我不想每次用户想要访问应用程序中的某些内容时都不断从网站上询问号码。我做了一些研究,发现了JWT身份验证,但我现在面临的问题是以一种有效的方式实现JWT身份验证。如果用户登录应用程序,它将向服务器发送用户名/密码,但向服务器发送普通密码似乎不安全。我还希望令牌在创建后有一个时间限制。我正在考虑为过期的令牌创建一个新的数据库,为有效令牌创建另一个数据库,并在用户每次尝试访问站点信息时检查这些数据库。我想用asp.net内核实现某种API,但我发现我当前使用的主机不支持.net。现在,我正在考虑使用服务器(可能是azure,但我不熟悉它)来生成密钥,当客户端尝试联系我的网站时,我会检查密钥是否存在于无效密钥数据库中,并阻止连接,否则,如果它不在有效密钥数据库中,请插入它

我的问题:

1)除上述方法外,我还有更好的方法来实现这一目标。

2) 如果没有,那么检查密钥以允许客户端访问网站数据库的最佳方法是什么。

您是否考虑过使用Auth0来保护您的服务器和WPF应用程序?查看更多信息,因为您可能可以使用他们提供的免费层实现此功能。

看起来这正是我想要的,但我希望实现我的功能self@Nice滚动您自己的身份验证系统正是人们陷入麻烦的原因。身份验证是一个复杂的问题,很容易在不经意间给系统添加一些漏洞。最好坚持使用来自知名来源(如Auth0或(Identity Server的创建者))的既定工具和模式@mason我明白了,谢谢你的建议。