Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oauth 2.0 Oauth2 PKCE谁应该生成代码验证程序和代码质询_Oauth 2.0_Pkce - Fatal编程技术网

Oauth 2.0 Oauth2 PKCE谁应该生成代码验证程序和代码质询

Oauth 2.0 Oauth2 PKCE谁应该生成代码验证程序和代码质询,oauth-2.0,pkce,Oauth 2.0,Pkce,我正在编写客户端应用程序,它将与一些Oauth2提供商集成。我将使用本机android应用程序作为前端,spring boot作为后端。我想在PKCE中使用授权\代码流我的问题是谁应该生成代码验证程序和代码挑战?我的后端还是我的本机应用? 我可以看到两种选择: 1) 前端正在调用授权端点。后端正在生成代码验证器和代码质询,并将代码质询返回到前端,并将其重定向到授权服务器。用户登录,授予权限,然后接收授权代码并转发到后端。然后后端使用代码验证器、客户端id和客户端密码调用授权服务器,并接收访问令牌

我正在编写客户端应用程序,它将与一些Oauth2提供商集成。我将使用本机android应用程序作为前端,spring boot作为后端。我想在PKCE中使用授权\代码流我的问题是谁应该生成代码验证程序和代码挑战?我的后端还是我的本机应用?

我可以看到两种选择:

1) 前端正在调用授权端点。后端正在生成代码验证器和代码质询,并将代码质询返回到前端,并将其重定向到授权服务器。用户登录,授予权限,然后接收授权代码并转发到后端。然后后端使用代码验证器、客户端id和客户端密码调用授权服务器,并接收访问令牌

2) FE正在生成代码验证程序和代码质询。它使用代码\挑战调用授权提供程序,用户登录,授予权限,然后接收授权代码。前端使用代码验证器转发授权代码,后端使用授权代码、代码验证器、客户端id和客户端密码调用授权提供程序

哪种方法更好更安全?

我们选择了方法2)


对手可能拦截前端和后端之间的通信,并使用代码从后端端点获取令牌。使用选项1,您只能保护后端和授权提供程序之间的通信,而不能保护前端和后端之间的通信。

谢谢您的回答。据我所知,在前端和后端之间拦截流量的情况下,选项1)更好,因为前端和后端之间不发送代码验证程序。所以只有后端有代码验证器,并且只有在后端调用授权服务器来接收访问令牌时才会离开后端。或者我理解错了不,选项2更好,因为选项1不保护前端到后端的通信。在选项1中,对手可以拦截代码响应并获得令牌。在选项2中,他需要代码验证器,只有你的前端有代码验证器。好的,我明白了。如果前端是web应用程序呢?我听说我现在推荐的PKCE也适用于web应用程序。它可以是webapp、wpf应用程序或其他应用程序。是的,建议使用PKCE,在Oauth 2.1中,所有其他流都将被弃用。