mirror of https://github.com/jumpserver/jumpserver
134 lines
2.7 KiB
Markdown
134 lines
2.7 KiB
Markdown
![]() |
# JumpServer PAM 客户端
|
|||
|
|
|||
|
该包提供了一个 Go 客户端,用于与 JumpServer PAM API 交互,以检索各种资产的密码。它简化了发送请求和处理响应的过程。
|
|||
|
|
|||
|
## 功能
|
|||
|
|
|||
|
- 在发送请求之前验证参数。
|
|||
|
- 支持基于资产和账户的密码检索。
|
|||
|
- 使用 HMAC-SHA256 签名进行身份验证,方便与 JumpServer PAM API 集成。
|
|||
|
|
|||
|
## 使用说明
|
|||
|
|
|||
|
1. **下载 Go 代码文件**:
|
|||
|
将代码文件下载到您的项目目录中。
|
|||
|
|
|||
|
2. **导入包**:
|
|||
|
在您的 Go 文件中导入该包,您即可直接使用其功能。
|
|||
|
|
|||
|
## 需求
|
|||
|
|
|||
|
- `Go 1.16+`
|
|||
|
- `github.com/google/uuid`
|
|||
|
- `gopkg.in/twindagger/httpsig.v1`
|
|||
|
|
|||
|
## 使用方法
|
|||
|
|
|||
|
### 初始化
|
|||
|
|
|||
|
要使用 JumpServer PAM 客户端,通过提供所需的 `endpoint`、`keyID` 和 `keySecret` 创建一个实例。
|
|||
|
|
|||
|
```go
|
|||
|
package main
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
|
|||
|
"your_module_path/jms_pam"
|
|||
|
)
|
|||
|
|
|||
|
func main() {
|
|||
|
client := jms_pam.NewJumpServerPAM(
|
|||
|
"http://127.0.0.1", // 替换为您的 JumpServer 端点
|
|||
|
"your-key-id", // 替换为您的实际 Key ID
|
|||
|
"your-key-secret", // 替换为您的实际 Key Secret
|
|||
|
"", // 留空以使用默认的组织 ID
|
|||
|
)
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 创建密码请求
|
|||
|
|
|||
|
您可以通过指定资产或账户信息来创建请求。
|
|||
|
|
|||
|
```go
|
|||
|
request, err := jms_pam.NewSecretRequest("Linux", "", "root", "")
|
|||
|
if err != nil {
|
|||
|
fmt.Println("创建请求时出错:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 发送请求
|
|||
|
|
|||
|
使用客户端的 `Send` 方法发送请求。
|
|||
|
|
|||
|
```go
|
|||
|
secretObj, err := client.Send(request)
|
|||
|
if err != nil {
|
|||
|
fmt.Println("发送请求时出错:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 处理响应
|
|||
|
|
|||
|
检查密码是否成功检索,并相应地处理响应。
|
|||
|
|
|||
|
```go
|
|||
|
if secretObj.Valid {
|
|||
|
fmt.Println("密码:", secretObj.Secret)
|
|||
|
} else {
|
|||
|
fmt.Println("获取密码失败:", string(secretObj.Desc))
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### 完整示例
|
|||
|
|
|||
|
以下是如何使用该客户端的完整示例:
|
|||
|
|
|||
|
```go
|
|||
|
package main
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
|
|||
|
"your_module_path/jms_pam"
|
|||
|
)
|
|||
|
|
|||
|
func main() {
|
|||
|
client := jms_pam.NewJumpServerPAM(
|
|||
|
"http://127.0.0.1",
|
|||
|
"your-key-id",
|
|||
|
"your-key-secret",
|
|||
|
"",
|
|||
|
)
|
|||
|
|
|||
|
request, err := jms_pam.NewSecretRequest("Linux", "", "root", "")
|
|||
|
if err != nil {
|
|||
|
fmt.Println("创建请求时出错:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
secretObj, err := client.Send(request)
|
|||
|
if err != nil {
|
|||
|
fmt.Println("发送请求时出错:", err)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
if secretObj.Valid {
|
|||
|
fmt.Println("密码:", secretObj.Secret)
|
|||
|
} else {
|
|||
|
fmt.Println("获取密码失败:", string(secretObj.Desc))
|
|||
|
}
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## 错误处理
|
|||
|
|
|||
|
该库会在创建 `SecretRequest` 时返回无效参数的错误。这包括对有效 UUID 的检查以及确保提供了必需的参数。
|
|||
|
|
|||
|
## 贡献
|
|||
|
|
|||
|
欢迎贡献!如有任何增强或错误修复,请提出问题或提交拉取请求。
|