我正在开发一个宁静的Web服务和一个基于角度的应用程序来访问我的Web服务。由于两者都是由我开发的,因此我决定实施OAuth 2 Pasword授权类型。(我们正在实现自己的OAuth服务器)。我在选择正确的授权类型时是否正确?
现在我对使用刷新令牌很困惑,因为它无法安全地存储在浏览器中,如果它被盗,它可以用来生成与黑客想要的一样多的访问令牌。
出于同样的原因,我不能使用长期访问令牌,这会破坏访问令牌的目的。
如果我使用短暂的访问令牌说60分钟并且不使用刷新令牌,那么我可能需要让用户每1小时登录一次,这对用户来说会很烦人。
有没有更好的方法来解决这个问题,或者我在流程中遗漏了什么?
我也可以使用隐式授权,但我相信问题是一样的。
答案 0 :(得分:1)
由于您可以控制所有3个实体(客户端,资源服务器和授权服务器),因此可以使用资源所有者密码凭据授予类型,尽管使用隐式授权类型可以为您提供升级身份验证方法的方法(s )为您的用户而不修改您的客户端以处理新的身份验证类型。
您可以返回刷新令牌并将其存储在会话存储(window.sessionStorage)中。
可以在此处找到关于令牌和存储替代品的更多好处:https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies/