2013-07-15 187 views
0

我正在使用OAuth来保护一些Web服务。 OAuth 2非常适合用户使用API​​访问他/她自己的数据的用例,或者授予他人访问权限以代表他调用API的用例。手动生成OAuth访问令牌

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

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

  1. 有一个屏幕,在这里,他/她可以注册申请。这将生成一个API密钥/秘密对。
  2. 要访问他/她自己的数据(对于双腿Auth),有一个UI屏幕,用户可以在其中为其注册的应用程序生成一个访问令牌。他可以在表格中指定范围和持续时间。
  3. 如果他是第三方开发人员,那么他需要将他的应用程序API密钥传递给他需要访问API并获得访问令牌的人员。

如果用户想要另一个应用程序/开发者访问代表他的API,然后

  1. 有一个屏幕,在那里他可以进入第三方的API密钥,范围和授权的持续时间。他可以通过生成的访问令牌谁就会访问开发者的API的

我将使用相同的OAuth库来产生,我会用,如果我走了Web服务的路线令牌。此外,我还可以在目前的情况没有扩大或需求出现时开发服务,现有的代币仍然可以工作。

回答

0

问题主要是安全问题之一。根据设计,访问令牌的持续时间不应由客户端设置。如果其他人在此期间知道访问令牌和客户端ID,则该用户的帐户将被入侵。正常情况下,此持续时间不会很长,并且会使用第二个秘密值刷新令牌来刷新当前的访问令牌。令牌刷新可以在代码中自动执行,但在您的方法中,需要手动完成。

+0

当然,如果仅仅不提供令牌过期的选项,并且无论它在自然流程中如何,都可以解决这个问题。我试图采用这种方法的全部原因是因为客户不想通过编写代码(或不能仅仅用于OAuth)。此外,我的API将在HTTPS上,因此获取访问令牌并不是微不足道的。不知道我理解你的观点,即有人可以访问客户端ID和访问令牌,因为如果发生这种情况,我会被拧紧,而不管我采取什么方法。 – anfab

+0

只要你有代码照顾Oauth,HTTPS就很好。但是一旦你编写了本手册,你就不能依赖开发人员来确保他只在正确的地方使用它。它可能通过电子邮件进行交换,聊天,发布便笺以及不可以。在生成的访问令牌上添加了无效期限,这只会增加随着时间的推移而发生的一些可能性。 – s1d