使用LDAP创建jumpserver用户

avatar 2019年12月21日22:03:01 4 3,757 次浏览

上次安装jumpserver最新版本,出现两个问题记录一下:
第一个问题,数据库结构不一样
新版本的数据库结构和老版本的不一样,启动新版本的jumpserver服务时,老版本的数据库被冲掉了。修复方法:可以把两个版本都改成旧版本的,也可以把数据库备份一份,使用新的启动之后再把数据导入进去。
第二个问题,ldap创建用户jumpserver认证不了
我们使用的是ldap作为用户的统一管理,但是,使用新版本的jumpserver时,在ldap上创建的用户,jumpserver不认证通过,以下是解决方法:

vim jumpserver/apps/authentication/utils.py 
# -*- coding: utf-8 -*-
#
from django.utils.translation import ugettext as _
from django.contrib.auth import authenticate

from common.utils import (
	get_ip_city, get_object_or_none, validate_ip
)
from users.models import User
from . import errors


def check_user_valid(**kwargs):
	password = kwargs.pop('password', None)
	public_key = kwargs.pop('public_key', None)
	email = kwargs.pop('email', None)
	username = kwargs.pop('username', None)
	request = kwargs.get('request')

	if username:
		user = get_object_or_none(User, username=username)
	elif email:
		user = get_object_or_none(User, email=email)
	else:
		user = None

	if user is None:
		return None, errors.reason_user_not_exist
	elif user.is_expired:
		return None, errors.reason_user_inactive
	elif not user.is_active:
		return None, errors.reason_user_inactive
	elif user.password_has_expired:
		return None, errors.reason_password_expired

	if password or public_key:
		user = authenticate(request, username=username,
							password=password, public_key=public_key)
		if user:
			return user, ''
	return None, errors.reason_password_failed

这是最新版本的用户认证信息,我们需要修改一下,看下面修改的。

vim jumpserver/apps/authentication/utils.py 
# -*- coding: utf-8 -*-
#
from django.contrib.auth import authenticate

from . import errors


def check_user_valid(**kwargs):
	password = kwargs.pop('password', None)
	public_key = kwargs.pop('public_key', None)
	username = kwargs.pop('username', None)
	request = kwargs.get('request')

	user = authenticate(request, username=username,
						password=password, public_key=public_key)
	if not user:
		return None, errors.reason_password_failed
	elif user.is_expired:
		return None, errors.reason_user_inactive
	elif not user.is_active:
		return None, errors.reason_user_inactive
	elif user.password_has_expired:
		return None, errors.reason_password_expired

	return user, ''

修改后重启服务,解决问题。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  2   博主  2

    • avatar 你好 4

      我评论咋看不见了啊,能不能加个qq好友啊

        • avatar 吴老二 Admin

          @你好 怕有垃圾评论,所以需要回复才可以,你发到我邮箱,我去加你

        • avatar 你好 4

          我是1.5.0的jumpserver,想直接迁移到1.5.9上(比较官方的回复是说不行,但是我之前1.5.0迁到过1.5.6上好用),数据库导入没啥问题,就是登录的时候一致登不上,到MySQL里把LDAP关掉也一直报错,Authenticate user: None。看你第二个问题里修改apps/authentication/utils.py 这里面改了吗?怎么跟默认的一样啊?

            • avatar 吴老二 Admin

              @你好 我的建议是你把1.5.9安装之后,在把数据导入进去。Authenticate user: None错误是没有用户,你先不使用ldap