我正在编写将与某些 Oauth2 提供商集成的客户端应用程序。我将把原生 android 应用程序作为前端,将 spring-boot 作为后端。我想将授权代码流与 PKCE 一起使用。我的问题是谁应该生成代码验证程序和代码挑战?我的后端还是我的本机应用程序?
我可以看到两个选项:
1) 前端正在调用授权端点。后端正在生成code_verifier和codechallenge并将codechallenge返回给前端,并将其重定向到授权服务器。用户登录,授予权限,然后接收授权码并将其转发到后端。然后后端使用 code_verifier、客户端 ID 和客户端密钥调用授权服务器并接收访问令牌
2)FE正在生成code_verifier和codechallenge。它使用code_challenge调用授权提供者,用户登录,授予权限,然后接收授权码。前端使用code_verifier转发授权码,然后后端使用授权码、code_verifier、客户端id和客户端密钥调用授权提供者。
哪种方法更好、更安全?
我们选择方法2)。
攻击者可能会拦截前端和后端之间的流量,并使用代码从后端端点获取令牌。使用选项 1,您只能保护后端和授权提供者之间的通信,但不能保护前端和后端之间的通信。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)