我正在设计API。它只能由我们自己制作的SPA使用。
但是,我已经阅读了两天的时间,以了解如何实现Oauth2.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)功能。
我应该实现Oauth2.0的授权代码流程。和它似乎是要用于您要给的场景中第三方客户端访问某些用户资源。
您对此有误。
此流量足以满足我的需求吗?
这是隐式流程,因此不建议再使用。建议您阅读本节:https://tools.ietf.org/html/draft-ietf-oauth-security-topics-11#section-2.1.2
因此,IETF的建议是将授权代码流与PKCE一起用于SPA应用程序。