二次开发Jumpserver用户登录认证模块,调用独立认证接口(一)

一、概述

Jumpserver用的是python的django框架开发,所以主要完成两个事情:

1、开发自己的认证后台

  一个认证后台就是要实现如下两个方法的类: get_user(id) 和 authenticate(**credentials) 。

     方法 get_user 返回一个 User 对象,参数 id 可以是用户名或者数据库ID。

   方法authenticate(**credentials)可以使用密码、token或者已有的认证接口实现身份认证,返回User对象。如果你的认证后台的User模型不是继承Django自带认证后台的 AbstractUser,每个User还需要创建一个对应的Django User对象,这样就可以继续沿用Django认证后台其他强大的功能。


2、指定认证后台    

  Django维护了一个用于检查认证的后台列表。 当调用 django.contrib.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= 'http://192.168.40.133:8080'
DJANGO_AUTH_TOKEN = 'zhoeuhnghuiuewpje9933378p&(po3j43'
2、authentication_backend(指定认证后台)
# Define Authentic use myauth
AUTHENTICATION_BACKENDS= (
'myauth.myauth_backend.MyAuthBackend',
)
3、installed_apps增加 myauth 
INSTALLED_APPS= (
'django.contrib.admin',
'django.cont
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值