当前位置: 首页 > 知识库问答 >
问题:

dockerized环境下的Keycloak和Spring Bootweb应用程序

金嘉言
2023-03-14

考虑以下环境:

  • 一个docker容器是keycloak
  • 另一个docker容器是我们的web应用程序,它使用keycloak进行身份验证

因此,问题是:如何配置keycloak客户机来为浏览器重定向和访问令牌endpoint应用不同的URL?

共有1个答案

闾丘书
2023-03-14

以前还有另一个属性auth-server-url-for-backend-requests,但是作为解决KeyCloak的JIRA上问题#2623的一个解决方案,pull request#2506删除了该属性。在对此问题的描述中,您将找到原因和可能的解决办法:这应该在DNS级别或通过向主机文件添加条目来解决。

因此,在客户机配置中没有什么可做的,除非您更改代码并制作自己版本的适配器,但在Docker级别可以做一些事情。为了使其正常工作,首先我建议您使用完全限定的域名而不是localhost作为公共主机名,就像在生产中一样,例如。keycloak.mydomain.com。如果您只是将其作为/etc/hosts旁边的别名添加到主机的/etc/hosts文件(或Windows等效文件)中,则可以使用假的(未在DNS服务器中注册)。

然后,如果使用Docker Compose,可以在容器连接的Docker网络上为keycloak服务设置别名(替代主机名)(请参见doc:Compose File reference/service configuration reference/networks/aliases)。例如:

version: "3.7"

services:
  keycloak:
    image: jboss/keycloak
    networks:
      # Replace 'mynet' with whatever user-defined network you are using or want to use
      mynet:
        aliases:
          - keycloak.mydomain.com

  webapp:
    image: "nginx:alpine"
    networks:
      - mynet

networks:
  mynet:

如果只是使用普通Docker,则可以使用Docker network Connect命令的--Alias标志(请参见doc:Container networking/IP address and hostname)进行等效操作。

 类似资料:
  • 我使用docker compose在docker容器中运行SpringBoot应用程序,在另一个docker集装箱中运行另一个VueJS应用程序。yml如下: 我试图调用SpringBoot REST API从我的VueJS应用程序使用超文本传输协议://backend: 8080/hello和它失败GET超文本传输协议://backend: 8080/hello net::ERR_NAME_NO

  • 我有一个Postgres服务器运行在Docker内部。在这个Postgres服务器中,我有一个名为'aa'的数据库。 我还有一个Spring Boot应用程序的Docker映像。当在Docker中执行此映像时,应该在数据库'aa'中创建数据库表。 为了实现这一点,我执行了以下步骤: 创建数据库AA; 我检查了日志:它说数据库'aa'不存在,很明显它存在于Postgres服务器中 psqlexcep

  • 本文向大家介绍ubuntu环境下python虚拟环境的安装过程,包括了ubuntu环境下python虚拟环境的安装过程的使用技巧和注意事项,需要的朋友参考一下 一. 虚拟环境搭建 在开发中安装模块的方法: pip install 模块名称 之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安装的会覆盖掉前面一次安装的。那如果一台机器上面开发多个项目使用到不同版本的模块呢?怎么样做才能

  • 本文向大家介绍Windows环境下python环境安装使用图文教程,包括了Windows环境下python环境安装使用图文教程的使用技巧和注意事项,需要的朋友参考一下 Windows环境下python的安装与使用 一、python如何运行程序 首先说一下python解释器,它是一种让其他程序运行起来的程序。当你编写了一段python程序,python解释器将读取程序,并按照其中的命令执行,得出结果

  • 是否可以在 Websphere 中的应用程序级别设置环境变量? WebSphere服务器可以托管多个应用程序。应用于服务端的任何环境变量都适用于该服务器上的所有应用程序。是否可以创建仅适用于单个应用程序的变量? 例如:假设我们有一个SpreadsheetApp和一个DocsApp在同一台服务器上运行。它们共享一些共同的代码,可以通过一个名为DocStorageLocal的环境变量进行配置。有没有可

  • Web已经从web网页向web应用(web application)方向发展,这一推动需要加入大量现有操作系统提供的能力,例如各个传感器的功能已经通过JavaScript接口提供给了web应用,文件或者存储系统,用户交互,网络连接,应用的生命周期,安装和卸载等管理。这些方面有些已经成熟,但是还有更多的在制定过程中。虽然标准化组织在不断加入新标准,但是现在还有很多缺失的地方需要补上。 支撑HTML5