首页 > 其他分享 >docker compose fullstack example -- keycloak web grant-type: password

docker compose fullstack example -- keycloak web grant-type: password

时间:2023-05-14 21:00:36浏览次数:36  
标签:web compose postgres grant POSTGRES DB token KEYCLOAK keycloak

fastapi-react-postgres-keycloak-sso

https://github.com/fanqingsong/fastapi-react-postgres-keycloak-sso

 

version: "3"

services:
  nginx:
    image: nginx:1.17
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - ./logs/nginx:/var/log/nginx
    ports:
      - 80:80
    depends_on:
      - frontend
      - backend

  backend:
    restart: unless-stopped
    build:
      context: backend
      dockerfile: Dockerfile
    env_file:
      - .env
    environment:
      PYTHONPATH: .
      DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_USER}
    volumes:
      - ./logs/backend:/logs
    ports:
      - 8888:8888
    depends_on:
      - postgres
      - keycloak

  frontend:
    build:
      context: frontend
      dockerfile: Dockerfile
    ports:
      - 8000:8000
    environment:
      NODE_ENV: development
      CHOKIDAR_USEPOLLING: "true"

  keycloak:
    image: jboss/keycloak:12.0.4
    environment:
      DB_VENDOR: POSTGRES
      DB_SCHEMA: public
      DB_ADDR: keycloak_postgres
      DB_DATABASE: ${KEYCLOAK_DB_DATABASE}
      DB_USER: ${KEYCLOAK_DB_USER}
      DB_PASSWORD: ${KEYCLOAK_DB_PASSWORD}
      KEYCLOAK_USER: ${KEYCLOAK_ADMIN_USERNAME}
      KEYCLOAK_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
      JDBC_PARAMS: "useSSL=false"
    ports:
      - 8080:8080
    depends_on:
      - keycloak_postgres

  postgres:
    image: postgres
    restart: always
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    ports:
      - 5432:5432
    volumes:
      - postgres_data:/var/lib/postgresql/data

  keycloak_postgres:
    image: postgres
    volumes:
      - keycloak_postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: ${KEYCLOAK_DB_DATABASE}
      POSTGRES_USER: ${KEYCLOAK_DB_USER}
      POSTGRES_PASSWORD: ${KEYCLOAK_DB_PASSWORD}

volumes:
  postgres_data:
  keycloak_postgres_data:

 

python-keycloak

https://python-keycloak.readthedocs.io/en/latest/

from keycloak import KeycloakOpenID

# Configure client
keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/",
                                 client_id="example_client",
                                 realm_name="example_realm",
                                 client_secret_key="secret")

# Get WellKnown
config_well_known = keycloak_openid.well_known()

# Get Code With Oauth Authorization Request
auth_url = keycloak_openid.auth_url(
    redirect_uri="your_call_back_url",
    scope="email",
    state="your_state_info")

# Get Access Token With Code
access_token = keycloak_openid.token(
    grant_type='authorization_code',
    code='the_code_you_get_from_auth_url_callback',
    redirect_uri="your_call_back_url")


# Get Token
token = keycloak_openid.token("user", "password")
token = keycloak_openid.token("user", "password", totp="012345")

# Get token using Token Exchange
token = keycloak_openid.exchange_token(token['access_token'], "my_client", "other_client", "some_user")

# Get Userinfo
userinfo = keycloak_openid.userinfo(token['access_token'])

# Refresh token
token = keycloak_openid.refresh_token(token['refresh_token'])

# Logout
keycloak_openid.logout(token['refresh_token'])

 

标签:web,compose,postgres,grant,POSTGRES,DB,token,KEYCLOAK,keycloak
From: https://www.cnblogs.com/lightsong/p/17400191.html

相关文章

  • WEB—加密算法
    前言:在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备————————————————————————————————————————————常见加密编码等算法解析MD5,SHA,ASC,进制,时间戳,U......
  • 老杜 JavaWeb 讲解(六) ——Servlet对象的生命周期
    (八)Servlet对象的生命周期对应视频:10-Servlet对象的生命周期8.1什么是Servlet对象生命周期?Servlet对象什么时候被创建。Servlet对象什么时候被销毁。Servlet对象创建了几个?Servlet对象的生命周期表示:一个Servlet对象从出生在最后的死亡,整个过程是怎样的。8.2Servle......
  • 【从0开始编写webserver·基础篇#01】为什么需要线程池?写一个线程池吧
    线程池参考:1、游双Linux高性能服务器编程2、TinyWebServer注:虽然是"从0开始",但最好对(多)线程、线程同步等知识点有所了解再看,不然可能有些地方会理解不到位(但也有可能是我没说明到位,水平有限,见谅)Web服务器与线程池的关系Web服务器需要同时处理多个客户端请求,并且每个请求可......
  • C# mqtt服务器源码,自带web API接口,可通过API进行更改服务器IP,端口,客户连接信息。
    C#mqtt服务器源码,自带webAPI接口,可通过API进行更改服务器IP,端口,客户连接信息。以windows服务方式运行,mqtt消息可开启持久化。通过API可以查询记录,在线用户等等。带服务器管理软件,也是源码。安装部署简单。ID:12490673681913825......
  • 485转web api服务器框架源码。 集成iot,web api服务,这套带码是通过C#
    485转webapi服务器框架源码。集成iot,webapi服务,这套带码是通过C#编写集成IOCP高性能高并发优势服务器服务源码。带手机app测试demo源码具体具备功能如下:1、具备EF6+mssql数据库功能,可更改为MYSQL或SQLITe.2、自带WEBAPI服务,抛弃IIS支持。用户可以通过WEB前端直接读取远程设备数......
  • OPC转web API服务器框架源码。 集成iot,web api服务,这套带码是通
    OPC转webAPI服务器框架源码。集成iot,webapi服务,这套带码是通过C#编写集成IOCP高性能高并发优势服务器服务源码。带手机app测试demo源码具体具备功能如下:1、具备EF6+mssql数据库功能,可更改为MYSQL或SQLITe.2、自带WEBAPI服务,抛弃IIS支持。用户可以通过WEB前端直接读取远程设备数......
  • c# 工业互联网云服务器框架。 集成web api服务,可选集成mqt
    c#工业互联网云服务器框架。集成webapi服务,可选集成mqtt服务器及其它服务器,这套带码是通过C#编写集成IOCP高性能高并发优势服务器服务源码。带手机app测试demo源码具体具备功能如下:1、具备EF6+mssql数据库功能,可更改为MYSQL或SQLITe.2、自带WEBAPI服务,抛弃IIS支持。用户可以通......
  • c#高性能服务器源代码,其中包括mvc api服务,http服务,ftp服务,sokect服务,websocket服务,大
    c#高性能服务器源代码,其中包括mvcapi服务,http服务,ftp服务,sokect服务,websocket服务,大文件传输服务。这些服务均抛开iis及第三支持,可写成服务或随软件启动而启动。ID:85320654113922032......
  • c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协
    c#轻量级高并发物联网服务器接收程序源码(仅仅是接收硬件数据程序,没有web端,不是java,协议自己写,如果问及这些问题统统不回复。),对接几万个设备没问题,数据库采用ef6+sqlite,可改ef+MySQL.该程序只是源码使用示例,里面有使用方法,自己研究,难度属中上层不建议新手拿YID:5999612973416375......
  • buuctf [网鼎杯 2020 朱雀组]phpweb
    首先访问网站,发现警告,说的是后端时区设置不对,这引导我们看看index源码是怎么查询时间的Warning:date():Itisnotsafetorelyonthesystem'stimezonesettings.Youarerequiredtousethedate.timezonesettingorthedate_default_timezone_set()function.Incase......