keycloak,为啥后端频道需要重定向 url
Posted
技术标签:
【中文标题】keycloak,为啥后端频道需要重定向 url【英文标题】:keycloak, why does backend channels need a redirect urlkeycloak,为什么后端频道需要重定向 url 【发布时间】:2021-09-04 17:37:18 【问题描述】:我尝试使用 openid connect 将我的 Python 应用程序(后端客户端)集成到 Keycloak 系统中,为什么我必须填写 Valid Redirect URIs
字段?根据我对 OAuth 2.0 的理解,后端通道只需要在 Authorization Code Flow 过程中交换 id 和访问令牌的代码
这里为什么需要重定向URL,不应该只填前端客户端吗?
有什么想法吗?
【问题讨论】:
【参考方案1】:接收授权代码的客户端和交换令牌代码的客户端必须是同一客户端 - 至少从授权服务器的角度来看。从理论上讲,您可以使用单独的应用程序来处理 OAuth 流程的各个部分,但它们必须使用相同的客户端 ID。
理想情况下,重定向 URI 指向 Python 后端公开的端点。在 Keycloak(或任何授权服务器)完成身份验证和授权后,它将用户连同授权码一起重定向到该端点。这样授权代码将直接发送到后端客户端,前端应用程序将永远不必处理它。通过注册 URL,您要确保没有人使用您的客户端 ID 执行授权,而是要求将代码发送到另一个应用程序。
【讨论】:
【参考方案2】:我们需要它来限制我们在成功登录后被允许重定向到的 URL。我们这样做是为了提高您用户的安全性,因为如果提供者在登录后可以重定向到任何 URL,这将是一个很大的安全问题。
【讨论】:
以上是关于keycloak,为啥后端频道需要重定向 url的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Spring Boot 不会重定向到 403 上的 Keycloak 登录页面?
为 Kubernetes 中的 Keycloak 指定重定向和内部查找的备用 URL
使用来自 Keycloak 的 URL OIDC 参数重定向给出错误请求
使用 nginx 的 Keycloak 重定向 url 将转到 http 而不是 https