我有一个关于将我的 C# 服务器上的身份验证从登录\密码更改为 PHP session 的可能性的小问题。我使用 PHP、HTML5 和 JavaScript 作为客户端,使用带有 WebSockets 库的 C# 服务器作为服务器端。我已经有授权码,但它只适用于登录名和密码。
好吧,我有相同的身份验证代码,它通过 PHP 检查登录名和密码。但是我如何通过将 WebSockets 与 PHP session 一起使用而不是帐户登录名和密码来在 C# 服务器上授权客户端?
这可能吗?以及它的任何代码、演示等?
最佳答案
生成您的 C# 服务器可以验证的访问 token 。这就是我将如何实现它:
在您的 PHP 和 C# 服务器之间共享一个 secret (例如 64 randcom 字节)
当 PHP 验证用户/登录时,生成一个 token :它包含随机字符、用户 ID 和使用共享 key 创建的签名。例如。像这样:
$random = base64_encode(mcrypt_create_iv(32));
$token = $random . '_' . $userID . '_' . hash_hmac('sha256', $random . '_' . $userID, SHARED_SECRET);
然后,C# 服务器可以通过使用共享 key 从 $random 和 $token 计算 HMAC 签名来验证此 token 。如果正确,C# 服务器可以使用 $userID 和 MySQL 数据库。
只要您通过 https 将 token 传递给您的 JS 代码,您就应该是安全的。
P.S.:你可以通过给token加上一个过期时间来提高这个方案的安全性,让你的JS代码及时请求一个新的token。不要忘记在签名中包含到期时间。
关于javascript - 通过 PHP session 进行服务器身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483598/