此验证流程是否安全?

问题描述 投票:0回答:2

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

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

我对此不感兴趣。

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

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

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

api security oauth oauth-2.0 jwt
2个回答
0
投票

[如果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)功能。


0
投票

我应该实现Oauth2.0的授权代码流程。和它似乎是要用于您要给的场景中第三方客户端访问某些用户资源。

您对此有误。

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

这是隐式流程,因此不建议再使用。建议您阅读本节:https://tools.ietf.org/html/draft-ietf-oauth-security-topics-11#section-2.1.2

因此,IETF的建议是将授权代码流与PKCE一起用于SPA应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.