c# - C++ 和 C# 之间的 token 登录?

标签 c# c++ mysql asp.net

这是我正在尝试做的事情。我在 C# 中有一个 asp .net 网站。我还有一个游戏服务器和游戏都是用 C++ 编写的。游戏服务器托管在网站所在的位置。

我想要的是当用户在游戏中点击一个按钮时能够自动登录网站。也就是说,游戏向游戏服务器发出请求,以及如何生成可用于登录网站的 token 。

所以服务器可能会发回类似这样的东西:

www.contoso.com/tokenlogin?userid=67456353&token=576434324431fgdsastr

我知道一个简单的解决方案是在数据库中创建一个网站可以读取的 token 。如果我找不到更好的解决方案,我会这样做,但理想情况下我想生成一个 token ,在接下来的 5 分钟内,将此 token 与此用户 ID 一起传递将登录该用户,就好像他们已经传递了密码一样。

我对此的一个简单想法是对他们的密码哈希和用户名进行哈希处理,这可行,但这没有时间戳。

有人对此有什么建议吗? MySQL 能否生成可验证的 token ?我正在使用 MySQL。我不介意使用数据库的解决方案,我只是不想要写入数据库的解决方案。

谢谢

最佳答案

生成随机 token 并将其保存到数据库(带有时间戳)绝对是最简单的解决方案。如果失败(或进程之间的另一种通信方式),您可以做的是在您的服务器中生成签名 token ,该 token 可以由您的网络应用程序验证。所以你的服务器会创建一个像这样的 token :

{userid: XXX, issueTime: YYY}

然后,您使用经过身份验证的加密方法(如 GCM)加密此数据,对其进行 base-64 编码,并将其附加到 URL。您的 Web 应用程序解密并验证数据,如果时间戳正确,则让用户登录。这需要进程之间的共享 key ,您不能丢失该 key 。

关于c# - C++ 和 C# 之间的 token 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912388/

相关文章:

c# - System.Net.Mail代码无法访问smtp服务器

c++ - const 正确性和成员指针

c++ - 为什么位是颠倒的?

android - 如何在真实设备上调试 Android native 代码

php - 当 php 的 mysql_query 返回 0 时,它会产生错误。怎么修?

mysql - 引用 mySQL 查询组件

c# - F# 中是否有类似于 Switch Case 命令的命令?

javascript - 拒绝加载样式表,因为它违反了内容安全策略

mysql - 在事件记录 ruby 中连接表

c# - 如何对字符串数组进行冒泡排序?