Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 手动生成OAuth访问令牌_Security_Oauth 2.0 - Fatal编程技术网

Security 手动生成OAuth访问令牌

Security 手动生成OAuth访问令牌,security,oauth-2.0,Security,Oauth 2.0,我希望使用OAuth来保护一些web服务。OAuth 2非常适合我的用例,用户可以使用API访问他/她自己的数据,或者授权他人代表他调用API 然而,最初的一组API用户技术性不强,他们不想为了生成令牌而进行API调用。我正在考虑实施以下解决方案,但不确定这是否是正确的方法 如果用户是开发人员,那么 有一个他/她可以注册申请的屏幕。这将生成一个API密钥/密钥对 要访问他/她自己的数据(对于两条腿的身份验证),用户可以在UI屏幕上为其注册的应用程序生成访问令牌。他可以在表单中指定范围和持续时间

我希望使用OAuth来保护一些web服务。OAuth 2非常适合我的用例,用户可以使用API访问他/她自己的数据,或者授权他人代表他调用API

然而,最初的一组API用户技术性不强,他们不想为了生成令牌而进行API调用。我正在考虑实施以下解决方案,但不确定这是否是正确的方法

如果用户是开发人员,那么

  • 有一个他/她可以注册申请的屏幕。这将生成一个API密钥/密钥对
  • 要访问他/她自己的数据(对于两条腿的身份验证),用户可以在UI屏幕上为其注册的应用程序生成访问令牌。他可以在表单中指定范围和持续时间
  • 如果他是第三方开发人员,那么他需要将他的应用程序API密钥传递给需要代表其访问API并在exchange中获得访问令牌的人员
  • 如果用户希望另一个应用程序/开发人员代表他访问API,那么

  • 有一个屏幕,他可以输入第三方的API密钥、范围和授权期限。他可以将生成的访问令牌传递给将访问API的开发人员

  • 我将使用相同的OAuth库来生成令牌,如果我使用web服务路径,我将使用该令牌。此外,我还可以在当前情况无法扩展或出现需求时开发服务,而现有令牌仍然可以工作。

    问题主要在于安全性。根据设计,客户端不应设置访问令牌的持续时间。如果在此期间有其他人知道访问令牌和客户端id,则此用户的帐户将被泄露。通常,此持续时间设置为不很长,并使用第二个秘密值刷新令牌刷新当前访问令牌。令牌刷新可以在代码中自动完成,但在您的方法中,它需要手动完成。

    当然,如果不提供令牌过期选项并在自然流中使用它,那么解决这个问题就很简单了。我尝试采用这种方法的全部原因是,客户机不希望仅仅为OAuth编写代码(或无法编写代码)。此外,我的API将在HTTPS上,因此获取访问令牌并不是件小事。我不知道你是否理解有人访问客户端id和访问令牌的意思,因为如果发生这种情况,不管我采取什么方法,我都会被搞砸。只要你有代码来处理Oauth,HTTPS是好的。但是一旦你制作了这本手册,你就不能依靠开发者来确保他只在正确的地方使用它。可以通过电子邮件、聊天、便笺等方式进行交流。再加上生成的访问令牌不过期,这只会增加随着时间的推移发生一些错误的概率。