我正在编写将与某些Oauth2提供程序集成的客户端应用程序。我将使用本地android应用作为前端,并使用spring-boot作为后端。我想在PKCE中使用authorization_code流。 我的问题是谁应该生成代码验证程序和代码挑战?我的后端还是本机应用?
我可以看到两个选项:
1)前端正在调用授权端点。后端生成code_verifier和代码质询,并将代码质询返回到前端,并将其重定向到授权服务器。用户登录,授予权限,然后接收授权码并将其转发到后端。然后后端正在使用code_verifier,客户端ID和客户端密码来调用授权服务器,并接收访问令牌
2)FE正在生成code_verifier和代码质询。它使用code_challenge调用授权提供者,用户登录,授予权限,然后接收授权码。前端使用code_verifier转发授权代码,然后后端使用授权代码,code_verifier,客户端ID和客户端密码调用授权提供程序。
哪种方法更好,更安全?
答案 0 :(得分:1)
我们选择了方法2)。
专家可能会拦截前端和后端之间的流量,并使用代码从后端端点获取令牌。使用选项1,您只能保护后端和授权提供者之间的通信,而不能保护前端和后端之间的通信。