此身份验证流程安全吗?

时间:2020-02-23 12:52:03

标签: api security oauth oauth-2.0 jwt

我正在设计一个API。它只能由我们自己制作的SPA使用。

但是,我已经花了两天时间来阅读如何实现Oauth2.0的授权代码流程。而且,它似乎打算用于要让第三方客户端访问某些用户资源的场景。

我对此不感兴趣。

此流量足以满足我的需求吗?

  1. 客户端(SPA)使用正文中的用户凭据请求/ login。
  2. 如果凭据正确,服务器将使用JWT令牌进行响应。
  3. 客户端(SPA)将令牌存储在本地存储中,从现在开始,它包括 授权标头中的令牌。

我读得越多,我就越迷路。

1 个答案:

答案 0 :(得分:1)

如果API是您SPA的后端,则最简单的方法是将Auth Code Flow与后端一起用作OAuth2客户端。后端发起身份验证请求,接收身份验证代码,将其交换为令牌。然后,后端可以创建具有所有可用身份验证和授权信息的会话。 SPA将获得一个标识会话的cookie。有一个很好的文档OAuth 2.0 for Browser-Based Apps-描述了最佳做法。

如果您需要无状态后端,则可以在SPA中使用“身份验证代码流”。您仅使用PKCE而不是客户密码。然后,您可以使用访问令牌作为API的授权。可以使用刷新令牌或带有&prompt=none的身份验证请求来刷新访问令牌。有关更多信息,请参见this article

如果您创建自己的/login端点来接受用户凭据并通过OAuth2服务器进行验证,则会失去一些好处-您的应用程序(SPA和后端)将可以使用敏感数据(凭据)安全问题。而且您将无法使用OAuth2服务器的单一登录(SSO)功能。