单点登录sso部署

发布于:2024-10-12 ⋅ 阅读:(213) ⋅ 点赞:(0)

单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

preview

如图所示,图中有4个系统,分别是Application1、Application2、Application3、和SSO。Application1、Application2、Application3没有登录模块,而SSO只有登录模块,没有其他的业务模块,当Application1、Application2、Application3需要登录时,将跳到SSO系统,SSO系统完成登录,其他的应用系统也就随之登录了。这完全符合我们对单点登录(SSO)的定义

同域下的单点登录原理

(原理略)

不同域下的单点登录原理

(原理略)

第三方 OAuth2 授权登录

第三方 OAuth2 授权登录,QQ、微信开放平台(Weixin)、微信公众平台(WeixinMP)、微博(Weibo)、淘宝(Taobao)、支付宝(Alipay)、钉钉(DingTalk)、飞书(Feishu)、码云(Gitee)、GitHub、微软(Microsoft )、StackOverflow、谷歌(Google)

支持第三方登录

三方 参考文档 应用申请(已登录)
QQ 参考文档 应用申请
微信 参考文档 应用申请
微信公众平台 参考文档 应用申请
微博 参考文档 应用申请
淘宝 参考文档 应用申请
支付宝 参考文档 应用申请
钉钉 参考文档 应用申请
飞书 参考文档 应用申请
码云 参考文档 应用申请
Gitlab 参考文档 应用申请
微软 参考文档 应用申请
GitHub 参考文档 应用申请
谷歌 参考文档 应用申请

参考链接:https://gitee.com/netnr/Netnr.Login

本地用keycloak实现

1、生成证书

#生成https证书,我用的IP,也可以换成域名
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/CN=10.10.0.8"
#修改证书权限,不然容器读取证书会有报错,服务起不来
chmod 644 server.key server.crt

2、编写docker-compose.yml文件

services:
  # mysql容器
  mysql:
    container_name: mysql
    image: mysql:8.0.39
    command:
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      - --log_timestamps=SYSTEM
      - --binlog_expire_logs_seconds=3600
      - --innodb_buffer_pool_size=2G
      - --max_connections=1000
      - --lower_case_table_names=1
    ports:
      - 3306:3306
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/keycloak/mysql/data:/var/lib/mysql
      - /data/keycloak/mysql/conf:/etc/mysql/conf.d:rw
      - /data/keycloak/mysql/logs:/var/log/mysql:rw
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: keycloak
      TZ: Asia/Shanghai									# 可选
  # keycloak容器
  keycloak:
    container_name: keycloak
    image: quay.io/keycloak/keycloak:25.0.6
    depends_on:
      - mysql
    environment:
      # 设置管理员账号密码
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: admin
      # 数据库配置
      KC_DB: mysql
      KC_DB_USERNAME: root
      KC_DB_PASSWORD: 123456
      KC_DB_URL: jdbc:mysql://10.10.0.8:3306/keycloak			# 能连接到数据库的ip 例如公网ip
      KC_HTTP_RELATIVE_PATH: /auth				#路径设置,也可以设置http-relative-path参数,其中包含相对于“/”的路径
      quarkus.transaction-manager.enable-recovery: true	# 可选
    ports:
      - 8443:8443
    security_opt: 
      - seccomp:unconfined								# 可选
    volumes:
      - /data/keycloak/cert:/etc/x509/https
      # 下面3行卷映射为可选配置
      - /data/keycloak/conf/quarkus.properties:/opt/keycloak/conf/quarkus.properties
      - /data/keycloak/themes:/opt/keycloak/themes
      - /etc/localtime:/etc/localtime
    privileged: true									# 可选
    command: start --hostname=10.10.0.8 --https-certificate-file=/etc/x509/https/server.crt --https-certificate-key-file=/etc/x509/https/server.key

3、创建持久化数据目录

mkdir -p /data/keycloak/mysql/{data,logs,conf}
mkdir -p /data/keycloak/{cert,conf,themes}

将证书复制到挂载的证书目录

cp -pr server.key server.crt /data/keycloak/cert/

4、接下来启动docker-compose

# 首次启动先拉取镜像
docker compose -f docker-compose.yml pull

# 启动命令
docker compose -f docker-compose.yml up -d

# 关闭命令
docker compose -f docker-compose.yml down

# 查看日志
docker compose -f docker-compose.yml logs

5、访问keycloak

启动好后稍等片刻,可通过ip或域名访问。
在上面的配置中,使用的是ip地址,端口使用的是8443。
访问https://xxx.xxx.xxx.xxx:8443即可。
在这里插入图片描述
因为是自签名证书,提示不安全,忽略,点击继续访问。
在这里插入图片描述
访问成功,点击左侧的Administrator Console进行登录,输入刚才配置的账号和密码(admin)。
在这里插入图片描述
可以按图所示将界面改为中文。
在这里插入图片描述

到此,keycloak就安装成功了!🎉


网站公告

今日签到

点亮在社区的每一天
去签到