beego结合nginx实现LDAP认证登录

2020-03-06  本文已影响0人  xyz098

auth_basic

  1. 创建用户密码保存到文件
  2. 配置auth_basic指令
# htpasswd工具
yum -y install httpd-tools 
# 创建test用户和保持密码的pass.db文件
cd /usr/local/nginx/conf
htpasswd -c pass.db test
# 配置基础认证
vim /usr/local/nginx/conf.d/local.conf
server {
    listen       80;
    server_name  local.abc.com;
    
    auth_basic "User Authentication";
    auth_basic_user_file /usr/local/nginx/conf/pass.db;
    
    location / {
        root   /data/www;
        index  index.html;
    }
}

ngx_http_auth_request_module

基本思路

登录模块 backend-sample-app.py

认证逻辑 nginx-ldap-auth-daemon.py

nginx逻辑 nginx-ldap-auth.conf

beego开发 ldap_auth_nginx

bee工具

bee new ldap_auth_nginx  # 创建
bee run                  # 热加载模式
bee pack                 # 打包

app.conf

; LDAP
addr = "xxx:389"
binddn = "xxx"
bindpass = "xxx"
basedn = "ou=xxx,dc=aaa,dc=com"
tls = false
starttls = false

; 自定义用户白名单
whitelist = "aa;bb"

github.com/astaxie/beego/config.go

// 增加配置
type Config struct {
    ... 
    LDAPConfig          LDAPConfig
    WhiteList           string
    WhiteMap            map[string]bool
}

// 初始化配置
func assignConfig(ac config.Configer) error {
    for _, i := range []interface{}{BConfig, &BConfig.Listen, &BConfig.WebConfig, &BConfig.Log, &BConfig.LDAPConfig, &BConfig.WebConfig.Session} {
        assignSingleConfig(i, ac)
    }
    ...
    // set whitelist
    BConfig.WhiteMap = make(map[string]bool)
    if BConfig.WhiteList != "" {
        list := strings.Split(BConfig.WhiteList, ";")
        for _, name := range list {
            BConfig.WhiteMap[name] = true
        }
    }
    ...
}
上一篇 下一篇

猜你喜欢

热点阅读