package
module
Version:
v0.0.2
Opens a new window with list of versions in this module.
Published: Dec 4, 2022
License: MIT
Opens a new window with license information.
Imports: 10
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
README
¶
study_cas
学习 cas 单点登录 casdoor 官网
介绍
软件架构
软件架构说明
安装教程
部署 casdoor
# 默认: admin/123
docker run -itd --name casdoor -p 8000:8000 casbin/casdoor-all-in-one
使用说明
casdoor 服务器配置
-
"证书"添加
- 名称: cert_haifengat
- 下载证书: haifengat.pem 保存到程序目录下
-
"组织"菜单中添加组织
- 名称: org_haifengat
- 万能密码: 12345
- 软删除
-
"角色"菜单中添加角色
- 选择组织: org_haifengat
- 名称: role_normal
- 显示名称: 通用
-
"模型"添加
- 组织: org_haifengat
- 名称: model_haifengat
- 模型文本: (RBAC)
# 请求
[request_definition]
r = sub, obj, act
# 策略
[policy_definition]
p = sub, obj, act
# 角色
[role_definition]
g = _, _
# 策略效果
[policy_effect]
e = some(where (p.eft == allow))
# 匹配器
[matchers]
m = g(r.sub, p.sub)&& r.obj == p.obj && r.act == p.act
-
"应用"添加
- 名称: app_test01
- 选择组织: org_haifengat
- 得到
- clientid: cd3518599975d2e97f5c
- secret: 16f49d8622bf8159e64144351a1a5a8454f7dff5
- 选择证书: cert_haifengat
- 添加重定向 URLs:
- 登录页面 url 中的 redict_uri 必须在此配置中
- http://localhost:9000/v1/login 测试本地后端 api
- 测试 api 时填后端地址
- 正常流程: 前端通过 redict_uri 得到 code&state, 再向后端请求登录
- accessToken 过期时间 168h=7d
- 保持登录会话
- 启用自动登录
- 启用验证码登录
- 启用 WebAuthn 登录
- OAuth 授权类型
- Authorization Code
- Token
- Password
- ID Token
- 预览:
先注册
http://localhost:8000/signup/app_test01
再登录 http://localhost:8000/login/oauth/authorize?client_id=cd3518599975d2e97f5c&response_type=code&redirect_uri=http://localhost:9000/v1/login&scope=read&state=casdoor
-
修改 cas_login.go 变量
//go:embed haifengat.pem
JwtPublicKey string
endpoint = "http://localhost:8000" // casdoor 的网址
clientId = "cd3518599975d2e97f5c"
clientSecret = "16f49d8622bf8159e64144351a1a5a8454f7dff5"
certificate = JwtPublicKey
organizationName = "org_haifengat"
applicationName = "app_test01"
-
注册用户 hf001/111111
-
登录(用上面得到的登录连接)
-
"权限"添加
- 选择组织: org_haifengat
- 名称: perm_normal
- 显示名称:普通
- 模型: model_haifengat
- 包含用户: org_haifengat/* 手写
- 包含角色: org_home/role_normal 模型中采用 RBAC
- 资源类型: 应用
- 资源: app_test01
- 动作: 读权限 写权限
- 通过审核
-
"用户"菜单添加
- 选择组织: org_haifengat
- 名称: haifengat
- 显示名称: 海风
- 用户类型: normal-user
- 密码: 123456
- 注册应用: app_test01
- 管理员
- 全局管理员
-
获取的数据
Name (in order) |
Must |
Description |
endpoint |
Yes |
Casdoor server URL, such as http://localhost:8000 |
clientId |
Yes |
Application.clientId |
clientSecret |
Yes |
Application.clientSecret |
certificate |
Yes |
x509 certificate content of Application.cert |
organizationName |
Yes |
Application.organization |
applicationName |
Yes |
Application.applicationName |
登录
参考代码
获取 code & state
# 默认应用: 显示casdoor登录界面,登录成功后返回跳转到 redirect_uri, 并带有state&code
# client_id 应用配置中获取
# state 应用名称
# redirect_uri 测试后端直接转到后端登录接口, 前端需获得 code&state 后再调用后端登录接口.
http://localhost:8000/login/oauth/authorize?client_id=02c82188b04a26e474bf&response_type=code&redirect_uri=http://localhost:9000/v1/login&scope=read&state=casdoor
casbin 权限
rbac_model.conf
var (
dmDSN string = "dm://SYSDBA:SYSDBA001@localhost:5236"
modelFile string = "./config/rbac_model.conf"
)
if err := middleware.InitCasAdapter(dmDSN, modelFile); err != nil {
logrus.Error(err)
os.Exit(1)
}
r.Use(middleware.CheckRole)
附
导入用户(xlsx 示例)
示例代码
Documentation
¶
InitCas 初始化 cas 配置
jwtKeyFile token_jwt_key.pem 文件路径
yamlConfig yaml配置文件路径, nil时读取环境变量
Source Files
¶
Directories
¶
Click to show internal directories.
Click to hide internal directories.