我正在开发一个只需要服务器访问的API,而不是特定的人类用户。我一直在使用客户端凭据授予,如果我没有弄错的话,它适用于这个用例。
因此,远程网站/应用程序在注册相应的OAuth2客户端后,只是通过SSL POST请求+ HTTP基本身份验证,使用客户端ID /机密组合请求访问令牌。
现在我想知道在所述访问令牌请求期间检查远程IP以确保它实际属于已注册的客户端(您必须声明一个或在声明您的应用程序时会有几个IP,然后会根据发出POST /令牌请求的服务器的远程IP进行检查。
我觉得这是一种简单的方法,可以确保即使客户ID /秘密以某种方式被盗,它们也无法在任何地方使用。
作为OAuth2协议的新手,我需要一些输入来判断这是否是一种有效的方法。有没有更聪明的方法来做到这一点,还是直接不必要(在这种情况下,出于什么原因)?
提前致谢
答案 0 :(得分:2)
这当然是一种有效的方法,但是将令牌紧密地绑定到网络层和部署,这可能使得难以改变网络架构。 OAuth解决您的问题的方式是所谓的占有证明扩展https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture。
可能值得考虑实现:即使它还不是最终的规范,它会将令牌绑定到客户端而不是IP地址,以防止网络更改,并且更具未来性。