Security 手动生成OAuth访问令牌
我希望使用OAuth来保护一些web服务。OAuth 2非常适合我的用例,用户可以使用API访问他/她自己的数据,或者授权他人代表他调用API 然而,最初的一组API用户技术性不强,他们不想为了生成令牌而进行API调用。我正在考虑实施以下解决方案,但不确定这是否是正确的方法 如果用户是开发人员,那么Security 手动生成OAuth访问令牌,security,oauth-2.0,Security,Oauth 2.0,我希望使用OAuth来保护一些web服务。OAuth 2非常适合我的用例,用户可以使用API访问他/她自己的数据,或者授权他人代表他调用API 然而,最初的一组API用户技术性不强,他们不想为了生成令牌而进行API调用。我正在考虑实施以下解决方案,但不确定这是否是正确的方法 如果用户是开发人员,那么 有一个他/她可以注册申请的屏幕。这将生成一个API密钥/密钥对 要访问他/她自己的数据(对于两条腿的身份验证),用户可以在UI屏幕上为其注册的应用程序生成访问令牌。他可以在表单中指定范围和持续时间
我将使用相同的OAuth库来生成令牌,如果我使用web服务路径,我将使用该令牌。此外,我还可以在当前情况无法扩展或出现需求时开发服务,而现有令牌仍然可以工作。问题主要在于安全性。根据设计,客户端不应设置访问令牌的持续时间。如果在此期间有其他人知道访问令牌和客户端id,则此用户的帐户将被泄露。通常,此持续时间设置为不很长,并使用第二个秘密值刷新令牌刷新当前访问令牌。令牌刷新可以在代码中自动完成,但在您的方法中,它需要手动完成。当然,如果不提供令牌过期选项并在自然流中使用它,那么解决这个问题就很简单了。我尝试采用这种方法的全部原因是,客户机不希望仅仅为OAuth编写代码(或无法编写代码)。此外,我的API将在HTTPS上,因此获取访问令牌并不是件小事。我不知道你是否理解有人访问客户端id和访问令牌的意思,因为如果发生这种情况,不管我采取什么方法,我都会被搞砸。只要你有代码来处理Oauth,HTTPS是好的。但是一旦你制作了这本手册,你就不能依靠开发者来确保他只在正确的地方使用它。可以通过电子邮件、聊天、便笺等方式进行交流。再加上生成的访问令牌不过期,这只会增加随着时间的推移发生一些错误的概率。