⼆次开发Jumpserver⽤户登录认证模块,调⽤独⽴认证接⼝(⼀)⼀、概述
Jumpserver⽤的是python的django框架开发,所以主要完成两个事情:
webserver接口开发1、开发⾃⼰的认证后台
  ⼀个认证后台就是要实现如下两个⽅法的类: get_user(id) 和 authenticate(**credentials) 。
⽅法 get_user 返回⼀个 User 对象,参数 id 可以是⽤户名或者数据库ID。
 ⽅法authenticate(**credentials)可以使⽤密码、token或者已有的认证接⼝实现⾝份认证,返回User对象。如果你的认证后台的User模型不是继承Django⾃带认证后台的AbstractUser,每个User还需要创建⼀个对应的Django User对象,这样就可以继续沿⽤Django认证后台其他强⼤的功能。
2、指定认证后台
  Django维护了⼀个⽤于检查认证的后台列表。当调⽤ ib.auth.authenticate() ,Django会尝试对其认证后台进⾏遍历认证。如果第⼀个认证⽅法失败,Django 会尝试认证第⼆个,以此类推,⼀直到尝试完。
  认证后台列表在AUTHENTICATION_BACKENDS设置中进⾏指定。
下⾯开始实现Jumpserver⽤户认证模块⼆次开发
⼆、修改juser\models class User(根据⾃⼰的需要增加attribute)
class User(AbstractUser):
USER_ROLE_CHOICES = (
('SU', 'SuperUser'),
('GA', 'GroupAdmin'),
('CU', 'CommonUser'),
)
name = models.CharField(max_length=80)
uuid = models.CharField(max_length=100)
role = models.CharField(max_length=2, choices=USER_ROLE_CHOICES, default='CU')
group = models.ManyToManyField(UserGroup)
phone = models.CharField(max_length=64, null=True)
department = models.CharField(max_length=255, null=True)
ssh_key_pwd = models.CharField(max_length=200)
三、修改setting
1、增加认证接⼝url配置
# myauth use sso
SSO_URL= '192.168.40.133:8080'
DJANGO_AUTH_TOKEN = 'zhoeuhnghuiuewpje9933378p&(po3j43'
2、authentication_backend(指定认证后台)
# Define Authentic use myauth
AUTHENTICATION_BACKENDS= (
'auth_backend.MyAuthBackend',
)
3、installed_apps增加 myauth
INSTALLED_APPS= (
'ib.admin',
'ib.auth',
'ttypes',
'ib.sessions',
'ssages',
'ib.staticfiles',
'ib.humanize',
'django_crontab',
'bootstrapform',
'jumpserver',
'juser',
'jasset',
'jperm',
'jlog',
'myauth',
)
四、修改jumpserver urls.py
urlpatterns = patterns('jumpserver.views',
# Examples:
url(r'^$', 'index', name='index'),
# url(r'^api/user/$', 'api_user'),
url(r'^skin_config/$', 'skin_config', name='skin_config'),
url(r'^admin/login', 'admin_login', name='admin_login'),
url(r'^admin/logout', 'admin_logout', name='admin_logout'),
url(r'^exec_cmd/$', 'exec_cmd', name='exec_cmd'),
url(r'^file/upload/$', 'upload', name='file_upload'),
url(r'^file/download/$', 'download', name='file_download'),
url(r'^setting', 'setting', name='setting'),
url(r'^terminal/$', 'web_terminal', name='terminal'),
url(r'^juser/', include('juser.urls')),
url(r'^jasset/', include('jasset.urls')),
url(r'^jlog/', include('jlog.urls')),
url(r'^jperm/', include('jperm.urls')),
url(r'', include('myauth.urls')),
)
五、修改原来登录模块只允许admin从本地登录
1、jumpserver\view.py
def admin_login(request):
"""登录界⾯"""
error = ''
if request.user.is_authenticated():
return HttpResponseRedirect(reverse('index'))
hod == 'GET':
return render_to_response('login.html')
else:
username = ('username')
password = ('password')
if username == 'admin'and password:
user = authenticate(username=username, password=password)
2、修改jumpserver\urls.py(见第四部分)
3、修改setting中的认证后台配置
# Define Authentic use myauth
AUTHENTICATION_BACKENDS = (
'auth_backend.MyAuthBackend', 'ib.auth.backends.ModelBackend',
)
六、认证模块代码中邮件内容去掉web登录密码
1、更改juser\user_api.py 的user_add_mail 函数,邮件内容去掉web登录密码mail_msg = u"""
Hi, %s
您的⽤户名: %s
您的权限: %s
您的ssh密钥⽂件密码: %s
密钥下载地址: %s/juser/key/down/?uuid=%s
说明:请登陆跳板机后台下载密钥, 然后使⽤密钥登陆跳板机!
""" % (user.name, user.username, (le, u'普通⽤户'),
<('ssh_key_pwd'), URL, user.uuid)
send_mail(mail_title, mail_msg, MAIL_FROM, [ail], fail_silently=False)
七、修改原来⽤户管理模块的功能
1、删除⽤户管理>⽤户列表(user_list.html)页⾯的添加和删除⽤户功能
2、删除nav_li_profile.html中的修改信息功能
3、编辑功能去掉密码修改
1)、删除页⾯密码输⼊⽂本框
2)、juser/user_api.py  db_update_user 去掉更新密码功能 if user 部分保留代码if user:
user_get = user[0]
user.update(**kwargs)
3)、juser/views.py user_edit函数删掉画框部分
⼋、认证后台编写

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。