wireguard的局限性
首先是必须得有公网ip
然后它的理念是设备之间组网而非域之间的组网,即两个不同网络见的两台设备进行通信。
而要实现手机(流量)访问某个局域网就得有中专服务器来配置流量转发,但如果有两个同网段的想互通就得通过添加配置(一个配置一个虚拟网卡)来实现,但是目前就只有docker的那个面板,还不支持多配置
Docker 不同网络的容器之间互相访问
按照Docker官方文档Docker and iptables说明,使用iptables进行网络隔离,使得默认情况下不同子网的容器之间是无法互相访问的。如果需要不同子网的容器之间互相访问时怎么办呢?文档给出了两种方法
1、禁用iptables
最直接的方法是在/etc/docker/daemon.json把iptables设置为false来直接禁用。这样所有的网络都没有隔离,但是这样做可能会破坏容器的网络。
2、使用DOCKER-USER链
可以通过iptables在DOCKER-USER链上添加规则以达到使用的目的。
iptables -I DOCKER-USER -i br-3bed419583c5 -o br-787e52a81bb4 -j ACCEPT
iptables -I DOCKER-USER -i br-787e52a81bb4 -o br-3bed419583c5 -j ACCEPT
1. 统一授权中心系统
1.1 用户管理
用户注册与登录:提供接口供用户注册和登录,支持多种身份验证方式(如用户名密码、第三方登录等)。
用户信息管理:提供接口管理用户信息,如修改密码、更新个人信息等。
1.2 OAuth2 服务
授权服务器:实现OAuth2协议,提供授权码模式(Authorization Code Flow)、简化模式(Implicit Flow)等,根据客户端类型选择合适的授权流程。
令牌颁发:颁发Access Token和Refresh Token,并支持Token的撤销和刷新。
客户端管理:管理客户端(如系统A和系统B)的注册信息,包括client_id、client_secret、回调URL等。
1.3 RBAC 权限管理
角色管理:定义角色,并为角色分配权限。
权限管理:定义权限,并将权限与资源(如API接口)关联。
用户角色分配:为用户分配角色。
2. 系统A(微信小程序)
2.1 登录与授权
微信登录:使用微信小程序的登录机制获取微信用户的openid等信息。
OAuth2 授权:将微信登录与OAuth2结合,用户通过微信登录后,授权中心系统颁发Access Token。
权限控制:在小程序端,根据Access Token中的角色和权限信息,控制用户对不同功能的访问。
2.2 API 访问
Token 传递:在调用后端API时,将Access Token放在请求头中进行身份验证和权限检查。
3. 系统B(独立的Web程序)
3.1 登录与授权
OAuth2 登录:用户通过OAuth2授权流程登录,选择授权系统B访问其信息。
权限控制:在Web程序中,根据Access Token中的角色和权限信息,控制用户对不同页面或功能的访问。
3.2 API 访问
4. 权限分离与控制
4.1 角色与权限定义
角色定义:定义不同的角色,如“普通用户”、“管理员”等。
权限定义:定义不同的权限,如“查看用户信息”、“修改用户信息”等。
角色权限分配:将权限分配给角色。
4.2 用户角色分配
用户角色分配:为用户分配一个或多个角色。
权限继承:用户通过其角色继承相应的权限。
4.3 权限检查
API权限检查:在授权中心系统中,对每个API接口进行权限检查,确保只有具有相应权限的用户才能访问。
前端权限控制:在系统A和系统B中,根据用户的权限信息,控制前端页面的显示和功能的可用性。
5. 安全考虑
Token 安全:确保Access Token和Refresh Token的安全性,防止Token泄露和滥用。
Session管理:如果使用Session机制,确保Session的安全性,如设置合适的过期时间、HttpOnly标志等。
跨域安全:如果系统A和系统B与授权中心系统跨域,确保CORS配置的安全性。
6. 技术选型
授权中心系统:可以使用Spring Security OAuth2或Keycloak等开源框架来实现OAuth2和RBAC功能。
数据库:使用关系型数据库(如MySQL)来存储用户、角色、权限等信息。
API网关:可以使用API网关(如Spring Cloud Gateway)来统一管理API的路由和权限检查。
7. 实施步骤
设计数据库模型:设计用户、角色、权限、客户端等表结构。
实现OAuth2服务:集成OAuth2框架,实现授权服务器和令牌颁发功能。
实现RBAC权限管理:实现角色、权限的管理功能,并将权限与API资源关联。
集成系统A和系统B:在系统A和系统B中集成OAuth2登录流程,并进行权限检查。
测试与优化:进行全面的测试,确保安全性和功能性,并根据测试结果进行优化。