自学内容网 自学内容网

单点登录sso部署

单点登录英文全称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
      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就安装成功了!🎉


原文地址:https://blog.csdn.net/qq_23435961/article/details/142566745

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!