这是我正在尝试做的事情。我在 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/