客户端设备的自动认证
Automatic Authentication of Client Device
全部,
我有一个网络应用程序,用户可以在其中与从设备发送的数据进行交互。这是一个自定义设备,只能与我们随设备提供的代码一起使用。
在设备上,我们希望能够在发送数据之前通过服务器进行身份验证。
在简单的实现中,我可以只存储设备的 ID,并在每次请求时将其发送到服务器。但是,这将是不安全的,因为任何拥有该 ID 的人都可以向服务器发送数据。
这是我的一些想法。
- 在设备上存储 "username" 和 "password"。每次设备登录时,服务器都会发送一个新密码供设备在下次身份验证时使用。这感觉不太对。显得脆弱和缺乏安全感。
- 生成一个 OTP 并将其与每个请求一起发送到服务器。感觉它会起作用,但我不确定如何生成 OTP。如果在短时间内发送了很多请求,这是否可行?
几个问题。
- 这种情况是否有行业最佳实践?
- TOTP是否适用于短时间内的多个请求?
设备运行 C#。服务器运行 Node.JS.
如果在短时间内发送了很多请求,TOTP 将无法按预期工作,这些请求可能会因竞争条件而错误地无效。
由于您对设备拥有本地控制权,因此您应该考虑利用 Public 密钥基础设施 (PKI)。一个简单的工作流程可以如下:
- 生成public-private 对证书或从证书颁发机构购买一对
- 在设备的证书库中安装私有证书,public在服务器的信任库中安装证书
- 使用私有证书对请求负载进行签名,并使用 public 证书在服务器上对其进行验证。
可以应用 PKI 的所有标准准则。
全部,
我有一个网络应用程序,用户可以在其中与从设备发送的数据进行交互。这是一个自定义设备,只能与我们随设备提供的代码一起使用。
在设备上,我们希望能够在发送数据之前通过服务器进行身份验证。
在简单的实现中,我可以只存储设备的 ID,并在每次请求时将其发送到服务器。但是,这将是不安全的,因为任何拥有该 ID 的人都可以向服务器发送数据。
这是我的一些想法。
- 在设备上存储 "username" 和 "password"。每次设备登录时,服务器都会发送一个新密码供设备在下次身份验证时使用。这感觉不太对。显得脆弱和缺乏安全感。
- 生成一个 OTP 并将其与每个请求一起发送到服务器。感觉它会起作用,但我不确定如何生成 OTP。如果在短时间内发送了很多请求,这是否可行?
几个问题。
- 这种情况是否有行业最佳实践?
- TOTP是否适用于短时间内的多个请求?
设备运行 C#。服务器运行 Node.JS.
如果在短时间内发送了很多请求,TOTP 将无法按预期工作,这些请求可能会因竞争条件而错误地无效。
由于您对设备拥有本地控制权,因此您应该考虑利用 Public 密钥基础设施 (PKI)。一个简单的工作流程可以如下:
- 生成public-private 对证书或从证书颁发机构购买一对
- 在设备的证书库中安装私有证书,public在服务器的信任库中安装证书
- 使用私有证书对请求负载进行签名,并使用 public 证书在服务器上对其进行验证。
可以应用 PKI 的所有标准准则。