Oauth 2.0 Oauth2 PKCE谁应该生成代码验证程序和代码质询
我正在编写客户端应用程序,它将与一些Oauth2提供商集成。我将使用本机android应用程序作为前端,spring boot作为后端。我想在PKCE中使用授权\代码流我的问题是谁应该生成代码验证程序和代码挑战?我的后端还是我的本机应用? 我可以看到两种选择: 1) 前端正在调用授权端点。后端正在生成代码验证器和代码质询,并将代码质询返回到前端,并将其重定向到授权服务器。用户登录,授予权限,然后接收授权代码并转发到后端。然后后端使用代码验证器、客户端id和客户端密码调用授权服务器,并接收访问令牌 2) FE正在生成代码验证程序和代码质询。它使用代码\挑战调用授权提供程序,用户登录,授予权限,然后接收授权代码。前端使用代码验证器转发授权代码,后端使用授权代码、代码验证器、客户端id和客户端密码调用授权提供程序 哪种方法更好更安全?我们选择了方法2)Oauth 2.0 Oauth2 PKCE谁应该生成代码验证程序和代码质询,oauth-2.0,pkce,Oauth 2.0,Pkce,我正在编写客户端应用程序,它将与一些Oauth2提供商集成。我将使用本机android应用程序作为前端,spring boot作为后端。我想在PKCE中使用授权\代码流我的问题是谁应该生成代码验证程序和代码挑战?我的后端还是我的本机应用? 我可以看到两种选择: 1) 前端正在调用授权端点。后端正在生成代码验证器和代码质询,并将代码质询返回到前端,并将其重定向到授权服务器。用户登录,授予权限,然后接收授权代码并转发到后端。然后后端使用代码验证器、客户端id和客户端密码调用授权服务器,并接收访问令牌
对手可能拦截前端和后端之间的通信,并使用代码从后端端点获取令牌。使用选项1,您只能保护后端和授权提供程序之间的通信,而不能保护前端和后端之间的通信。谢谢您的回答。据我所知,在前端和后端之间拦截流量的情况下,选项1)更好,因为前端和后端之间不发送代码验证程序。所以只有后端有代码验证器,并且只有在后端调用授权服务器来接收访问令牌时才会离开后端。或者我理解错了不,选项2更好,因为选项1不保护前端到后端的通信。在选项1中,对手可以拦截代码响应并获得令牌。在选项2中,他需要代码验证器,只有你的前端有代码验证器。好的,我明白了。如果前端是web应用程序呢?我听说我现在推荐的PKCE也适用于web应用程序。它可以是webapp、wpf应用程序或其他应用程序。是的,建议使用PKCE,在Oauth 2.1中,所有其他流都将被弃用。