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

Keycloak 将我重定向到我的索引 url 而不是请求的

如何在使用 keycloak 进行身份验证时处理 uri 重定向