我有一个前端应用程序(目前正在重新配置,将来会重新配置),我希望在其中使用Oauth2流。
我想在后台做的API请求。此用例的最佳实践是什么?
python needs a credential object中的google客户端可以示例化,例如像这样:
credentials = Credentials(
token=token,
refresh_token=refresh_token,
token_uri="https://www.googleapis.com/oauth2/v3/token",
client_id=client_id,
client_secret=client_secret,
)
字符串
将token
和refresh_token
从前端发送到后端,以便在后端进行后续的API调用,这是一个好的做法吗?
1条答案
按热度按时间nr9pn0ug1#
理论上,不。但是,“我可以在这里存储我的凭据并将其发送到那里”问题的核心在于“这里”是公共客户端还是机密客户端。
安全Maven会告诉你“永远不要相信互联网”,所以从互联网上下载的程序总是一个公共客户端。但是,如果您的前端在内部网络(通常是您的公司)中受到很好的保护,并使用安全协议(命名为HTTPS)下载到您的浏览器,甚至只能在内部网络中访问,那么它就不是“互联网”。
话虽如此,最佳实践仍然是将凭据存储在后端。BFF(Backend For Frontend)模式可以用来实现这一点,请参阅:
https://curity.io/resources/learn/the-token-handler-pattern/
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps#name-backend-for-frontend-bff-pr
https://datatracker.ietf.org/doc/html/draft-bertocci-oauth2-tmi-bff-01的