keycloak,为什么后端通道需要重定向 url

问题描述

我尝试使用 openid connect 将我的 Python 应用程序(后端客户端)集成到 Keycloak 系统中,为什么我必须填写 Valid Redirect URIs 字段?根据我对 OAuth 2.0 的理解,后端通道只需要在 Authorization Code Flow 过程

中交换 id 和访问令牌的代码

这里为什么需要重定向网址,难道不应该只在前端客户端填写吗?

有什么想法吗?

enter image description here

解决方法

我们需要它来限制我们在成功登录后可以重定向到的 URL。我们这样做是为了提高您用户的安全性,因为如果提供商在登录后可以重定向到任何 URL,这将是一个很大的安全问题。

,

接收授权码的客户端和交换令牌代码的客户端必须是同一个客户端——至少从授权服务器的角度来看是这样。理论上,您可以使用单独的应用程序来处理 OAuth 流程的一部分,但它们必须使用相同的客户端 ID。

理想情况下,重定向 URI 指向 Python 后端公开的端点。 Keycloak(或任何授权服务器)完成身份验证和授权后,它将用户与授权代码一起重定向到该端点。这样授权码将直接发送到后端客户端,前端应用程序将永远不必处理它。通过注册 URL,您希望确保没有人使用您的客户端 ID 执行授权,而是要求将代码发送到另一个应用程序。