cas

package module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 4, 2022 License: MIT Imports: 10 Imported by: 0

README

study_cas

学习 cas 单点登录 casdoor 官网

介绍

软件架构

软件架构说明

安装教程

部署 casdoor
# 默认: admin/123
docker run -itd --name casdoor -p 8000:8000 casbin/casdoor-all-in-one

使用说明

casdoor 服务器配置
  1. "证书"添加

    1. 名称: cert_haifengat
    2. 下载证书: haifengat.pem 保存到程序目录下
  2. "组织"菜单中添加组织

    1. 名称: org_haifengat
    2. 万能密码: 12345
    3. 软删除
  3. "角色"菜单中添加角色

    1. 选择组织: org_haifengat
    2. 名称: role_normal
    3. 显示名称: 通用
  4. "模型"添加

    1. 组织: org_haifengat
    2. 名称: model_haifengat
    3. 模型文本: (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
    
  5. "应用"添加

    1. 名称: app_test01
    2. 选择组织: org_haifengat
    3. 得到
      1. clientid: cd3518599975d2e97f5c
      2. secret: 16f49d8622bf8159e64144351a1a5a8454f7dff5
    4. 选择证书: cert_haifengat
    5. 添加重定向 URLs:
      1. 登录页面 url 中的 redict_uri 必须在此配置中
        1. http://localhost:9000/v1/login 测试本地后端 api
      2. 测试 api 时填后端地址
      3. 正常流程: 前端通过 redict_uri 得到 code&state, 再向后端请求登录
    6. accessToken 过期时间 168h=7d
    7. 保持登录会话
    8. 启用自动登录
    9. 启用验证码登录
    10. 启用 WebAuthn 登录
    11. OAuth 授权类型
      • Authorization Code
      • Token
      • Password
      • ID Token
    12. 预览: 先注册 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
  6. 修改 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"
    
  7. 注册用户 hf001/111111

  8. 登录(用上面得到的登录连接)

  9. "权限"添加

    1. 选择组织: org_haifengat
    2. 名称: perm_normal
    3. 显示名称:普通
    4. 模型: model_haifengat
    5. 包含用户: org_haifengat/* 手写
    6. 包含角色: org_home/role_normal 模型中采用 RBAC
    7. 资源类型: 应用
    8. 资源: app_test01
    9. 动作: 读权限 写权限
    10. 通过审核
  10. "用户"菜单添加

    1. 选择组织: org_haifengat
    2. 名称: haifengat
    3. 显示名称: 海风
    4. 用户类型: normal-user
    5. 密码: 123456
    6. 注册应用: app_test01
    7. 管理员
    8. 全局管理员
  11. 获取的数据

    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

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitCas added in v0.0.2

func InitCas(jwtKeyFile string, yamlConfig ...string) error

InitCas 初始化 cas 配置 jwtKeyFile token_jwt_key.pem 文件路径 yamlConfig yaml配置文件路径, nil时读取环境变量

func InitRouter

func InitRouter(g *gin.RouterGroup)

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL