[golang]-golang通过api创建jumpserver用户

导语:想用自己抠脚的代码水平简化一下自己的工作。

一共4种方式,以下是用了Private Token, 因为用access key我这提示报错虽然能跑,但是看着不舒服,菜狗暂时没找到问题。

Session 登录后可以直接使用 session_id 作为认证方式

Token 获取一次性 Token,该 Token 有有效期, 过期作废

Private Token 永久 Token

Access Key 对 Http Header 进行签名

创建测试的jumpserver 并获取永久token

docker exec -it jms_core /bin/bash
cd /opt/jumpserver/apps
python manage.py shell
from users.models import User
u = User.objects.get(username='admin')

测试之前的用户列表

创建用户获取用户信息的代码如下。

这里使用的是

// Golang 示例
package main

import (
	"bytes"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

func GetUserInfo(jms_url, token string) {
	url := jms_url + "/api/v1/users/users/"
	client := &http.Client{}
	req, err := http.NewRequest("GET", url, nil)
	req.Header.Add("Authorization", "Token "+token)
	req.Header.Add("X-JMS-ORG", "00000000-0000-0000-0000-000000000002")
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(body))
}

func CreateUser(jms_url, token string) {
	email := "test3@163.com"
	name := "test3"
	username := "test3"

	url := jms_url + "/api/v1/users/users/"
	client := &http.Client{}
	post := "{\"name\":\"" + name +
		"\",\"username\":\"" + username +
		"\",\"email\":\"" + email +
		"\"}"

	var jsonStr = []byte(post)
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))

	req.Header.Add("Authorization", "Token "+token)
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("cache-control", "no-cache")
	req.Header.Add("X-JMS-ORG", "00000000-0000-0000-0000-000000000002")

	resp, _ := client.Do(req)
	if err != nil {
		// handle error
	}
	defer resp.Body.Close()
	statuscode := resp.StatusCode
	head := resp.Header
	body, _ := ioutil.ReadAll(resp.Body)

	fmt.Println(string(body))

	fmt.Println(statuscode)

	fmt.Println(head)

	// 判断statuscode 判断是否成功
	if statuscode < 300 {

		fmt.Print("用户授权成功")
	} else {
		fmt.Print("用户授权失败 请手动确认")
	}

	fmt.Println(string(body))

}

func main() {
	jms_url := "http://ip"
	token := "${token}"
	GetUserInfo(jms_url, token)
	fmt.Print("创建用户测试")
	CreateUser(jms_url, token)
	GetUserInfo(jms_url, token)
}

执行成功

[Running] go run "/Users/xujiamin/Documents/ity2/biligo/jump_test_private_token.go"

[{"id":"3341a5f6-5ed0-497a-92c1-ff2591daab32","name":"Administrator","username":"admin","email":"admin@mycomany.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/11 16:03:44 +0800","date_joined":"2022/01/28 16:03:44 +0800","last_login":"2022/01/28 16:09:18 +0800","created_by":"","comment":"","is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户 | 系统管理员","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":false,"date_password_last_updated":"2022/01/28 16:09:09 +0800","avatar_url":"/static/img/avatar/admin.png","role":"Admin","role_display":"系统管理员","groups":["b360803f-e760-4722-a761-c005b3518267"],"groups_display":"Default","org_roles":["User"],"can_update":true,"can_delete":false,"login_blocked":false},{"id":"bc4bd1b2-5d49-4ba0-a349-232469b453a9","name":"test1","username":"test1","email":"test1@163.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/13 11:49:39 +0800","date_joined":"2022/01/30 11:50:07 +0800","last_login":null,"created_by":"Administrator","comment":null,"is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":true,"date_password_last_updated":"2022/01/30 11:50:07 +0800","avatar_url":"/static/img/avatar/user.png","role":"User","role_display":"用户","groups":["b360803f-e760-4722-a761-c005b3518267"],"groups_display":"Default","org_roles":["User"],"can_update":true,"can_delete":true,"login_blocked":false},{"id":"b97ccb02-d07b-4c80-9f13-7d3d69f02659","name":"test2","username":"test2","email":"test2@163.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/13 11:49:39 +0800","date_joined":"2022/01/30 12:22:48 +0800","last_login":null,"created_by":"Administrator","comment":null,"is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":true,"date_password_last_updated":"2022/01/30 12:22:48 +0800","avatar_url":"/static/img/avatar/user.png","role":"User","role_display":"用户","groups":["b360803f-e760-4722-a761-c005b3518267"],"groups_display":"Default","org_roles":["User"],"can_update":true,"can_delete":true,"login_blocked":false}]

创建用户测试{"id":"e2909e28-309d-488d-ac02-6eddc650e2c3","name":"test3","username":"test3","email":"test3@163.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/13 13:44:57 +0800","date_joined":"2022/01/30 13:44:57 +0800","last_login":null,"created_by":"Administrator","comment":null,"is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":true,"date_password_last_updated":"2022/01/30 13:44:57 +0800","avatar_url":"/static/img/avatar/user.png","role":"User","role_display":"用户","groups":[],"groups_display":"","org_roles":["User"],"can_update":true,"can_delete":true,"login_blocked":false}

201

map[Allow:[GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS] Connection:[keep-alive] Content-Language:[zh-hans] Content-Length:[1004] Content-Type:[application/json] Date:[Sun, 30 Jan 2022 05:44:57 GMT] Referrer-Policy:[same-origin] Server:[nginx] Vary:[Accept, Accept-Language, Cookie] X-Content-Type-Options:[nosniff] X-Frame-Options:[DENY]]

用户授权成功{"id":"e2909e28-309d-488d-ac02-6eddc650e2c3","name":"test3","username":"test3","email":"test3@163.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/13 13:44:57 +0800","date_joined":"2022/01/30 13:44:57 +0800","last_login":null,"created_by":"Administrator","comment":null,"is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":true,"date_password_last_updated":"2022/01/30 13:44:57 +0800","avatar_url":"/static/img/avatar/user.png","role":"User","role_display":"用户","groups":[],"groups_display":"","org_roles":["User"],"can_update":true,"can_delete":true,"login_blocked":false}

[{"id":"3341a5f6-5ed0-497a-92c1-ff2591daab32","name":"Administrator","username":"admin","email":"admin@mycomany.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/11 16:03:44 +0800","date_joined":"2022/01/28 16:03:44 +0800","last_login":"2022/01/28 16:09:18 +0800","created_by":"","comment":"","is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户 | 系统管理员","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":false,"date_password_last_updated":"2022/01/28 16:09:09 +0800","avatar_url":"/static/img/avatar/admin.png","role":"Admin","role_display":"系统管理员","groups":["b360803f-e760-4722-a761-c005b3518267"],"groups_display":"Default","org_roles":["User"],"can_update":true,"can_delete":false,"login_blocked":false},{"id":"bc4bd1b2-5d49-4ba0-a349-232469b453a9","name":"test1","username":"test1","email":"test1@163.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/13 11:49:39 +0800","date_joined":"2022/01/30 11:50:07 +0800","last_login":null,"created_by":"Administrator","comment":null,"is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":true,"date_password_last_updated":"2022/01/30 11:50:07 +0800","avatar_url":"/static/img/avatar/user.png","role":"User","role_display":"用户","groups":["b360803f-e760-4722-a761-c005b3518267"],"groups_display":"Default","org_roles":["User"],"can_update":true,"can_delete":true,"login_blocked":false},{"id":"b97ccb02-d07b-4c80-9f13-7d3d69f02659","name":"test2","username":"test2","email":"test2@163.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/13 11:49:39 +0800","date_joined":"2022/01/30 12:22:48 +0800","last_login":null,"created_by":"Administrator","comment":null,"is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":true,"date_password_last_updated":"2022/01/30 12:22:48 +0800","avatar_url":"/static/img/avatar/user.png","role":"User","role_display":"用户","groups":["b360803f-e760-4722-a761-c005b3518267"],"groups_display":"Default","org_roles":["User"],"can_update":true,"can_delete":true,"login_blocked":false},{"id":"e2909e28-309d-488d-ac02-6eddc650e2c3","name":"test3","username":"test3","email":"test3@163.com","wechat":"","phone":null,"mfa_level":0,"source":"local","source_display":"数据库","can_public_key_auth":true,"need_update_password":false,"mfa_enabled":false,"is_valid":true,"is_expired":false,"is_active":true,"date_expired":"2092/01/13 13:44:57 +0800","date_joined":"2022/01/30 13:44:57 +0800","last_login":null,"created_by":"Administrator","comment":null,"is_wecom_bound":false,"is_dingtalk_bound":false,"is_feishu_bound":false,"is_otp_secret_key_bound":false,"wecom_id":null,"dingtalk_id":null,"feishu_id":null,"total_role_display":"用户","org_role_display":"用户","mfa_level_display":"禁用","mfa_force_enabled":false,"is_first_login":true,"date_password_last_updated":"2022/01/30 13:44:57 +0800","avatar_url":"/static/img/avatar/user.png","role":"User","role_display":"用户","groups":[],"groups_display":"","org_roles":["User"],"can_update":true,"can_delete":true,"login_blocked":false}]



[Done] exited with code=0 in 0.782 seconds

执行代码后 创建成功,因为只传了username user mail 3个必要字段,用户组名非必须所以为空。密码也是没有设置的,如果需要则自行传入

官方文档

https://docs.jumpserver.org/zh/master/dev/rest_api/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值