Ruby on rails rails中api的类似github的身份验证

Ruby on rails rails中api的类似github的身份验证,ruby-on-rails,authentication,ssl,public-key-encryption,Ruby On Rails,Authentication,Ssl,Public Key Encryption,我正在创建一个只由特定设备使用的API。我希望使用公钥和私钥对进行身份验证,类似于github使用SSH进行身份验证的方式 我认为可行的方案如下: 设备将使用其ID请求授权 服务器根据提供的ID查找设备的公钥,并加密随机字符串。字符串被发送到设备 设备接收加密字符串并使用其私钥对其解密,然后将结果发送回服务器 服务器检查字符串以确保其匹配,如果检查正确,则为设备设置正确的会话变量 所有这些都是通过SSL连接进行的,因此无法窥探步骤3并再次用于身份验证。有些设备不需要这种类型的授权,因此SSL连接

我正在创建一个只由特定设备使用的API。我希望使用公钥和私钥对进行身份验证,类似于github使用SSH进行身份验证的方式

我认为可行的方案如下:

  • 设备将使用其ID请求授权
  • 服务器根据提供的ID查找设备的公钥,并加密随机字符串。字符串被发送到设备
  • 设备接收加密字符串并使用其私钥对其解密,然后将结果发送回服务器
  • 服务器检查字符串以确保其匹配,如果检查正确,则为设备设置正确的会话变量
  • 所有这些都是通过SSL连接进行的,因此无法窥探步骤3并再次用于身份验证。有些设备不需要这种类型的授权,因此SSL连接不能只验证设备的公钥是否由服务器的证书颁发机构生成,如果不是,则关闭连接


    首先,这有意义吗,还是有更好的方法?第二,是否有一些gem已经在rails中实现了这一点?这似乎是一种比较常见的方法。

    据我所知,github只使用SSH对存储库进行身份验证,而不是网站本身,并且说身份验证与网站完全独立。我知道,但是我想为我的API登录和wan实现这个协议,以确保它是合理的和安全的。谢谢