javascript - 通过 PHP session 进行服务器身份验证

标签 javascript c# php authentication websocket

我有一个关于将我的 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/

相关文章:

c# - 这个 TPL 习语存在吗?

c# - 在 Gridview 中显示来自 SQL 数据库的数据

javascript - 如何让 PHP 验证回退?

javascript - 用函数定义函数

c# - 由方法而不是构造函数创建的假对象

php - 使用 Ajax 列出站点/ip 端口状态

php - Sqlite3通过PHP转储数据库

php - MongoDB $lookup 的结果非常慢

javascript - Angular Material datepicker自定义日期(开始和结束日期)验证问题

javascript - 阻止点击加载网站并加载一些其他自定义内容?