我正在编写与某些Oauth2提供商集成的客户端应用程序。我将使用本地android应用程序作为前端,而spring引导作为后端。我想在PKCE中使用authorization_code流。我的问题是谁应该生成代码验证器和代码挑战?我的后端还是我的本地应用程序?
我可以看到两种选择:
1)前端调用授权端点。后端正在生成code_verifier和代码挑战,并将代码挑战返回到前端,并将其重定向到授权服务器。用户登录,授予权限,然后接收授权代码并转发到后端。然后后端使用code_verifier、客户端id和客户端机密调用授权服务器,并接收访问令牌。
( 2) FE生成code_verifier和代码挑战。它用code_challenge调用授权提供程序,用户登录,授予权限,然后接收授权代码。前端使用code_verifier转发授权代码,然后后端使用授权代码、code_verifier、客户端id和客户端机密调用授权提供程序。
哪一种方法更好、更安全?
发布于 2020-05-25 09:29:00
我们选择了方法2)。
对手可能会拦截前端和后端之间的通信,并使用代码从后端端点获取令牌。使用选项1,您只保护后端和授权提供程序之间的通信,而不保护前端和后端之间的通信。
https://stackoverflow.com/questions/61999232
复制相似问题