mirror of https://github.com/jumpserver/jumpserver
154 lines
3.0 KiB
Markdown
154 lines
3.0 KiB
Markdown
![]() |
## 1. 簡介
|
|||
|
|
|||
|
本 API 提供了 PAM 查看資產賬號服務,支持 RESTful 風格的調用,返回數據採用 JSON 格式。
|
|||
|
|
|||
|
## 2. 環境要求
|
|||
|
|
|||
|
- `Go 1.16+`
|
|||
|
- `crypto/hmac`
|
|||
|
- `crypto/sha256`
|
|||
|
- `encoding/base64`
|
|||
|
- `net/http`
|
|||
|
|
|||
|
## 3. 使用方法
|
|||
|
|
|||
|
**請求方式**: `GET api/v1/accounts/integration-applications/account-secret/`
|
|||
|
|
|||
|
**請求參數**
|
|||
|
|
|||
|
| 參數名 | 類型 | 必填 | 說明 |
|
|||
|
|----------|------|-----|---------------|
|
|||
|
| asset | str | 是 | 資產 ID / 資產名稱 |
|
|||
|
| account | str | 是 | 賬號 ID / 賬號名稱 |
|
|||
|
|
|||
|
**響應示例**:
|
|||
|
```json
|
|||
|
{
|
|||
|
"id": "72b0b0aa-ad82-4182-a631-ae4865e8ae0e",
|
|||
|
"secret": "123456"
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
## 常見問題(FAQ)
|
|||
|
|
|||
|
Q: API Key 如何獲取?
|
|||
|
|
|||
|
A: 你可以在 PAM - 應用管理 創建應用生成 KEY_ID 和 KEY_SECRET。
|
|||
|
|
|||
|
## 版本歷史(Changelog)
|
|||
|
|
|||
|
|
|||
|
| 版本號 | 變更內容 | 日期 |
|
|||
|
| ----- | ----------------- |------------|
|
|||
|
| 1.0.0 | 初始版本 | 2025-02-11 |
|
|||
|
|
|||
|
## 使用方法
|
|||
|
|
|||
|
### 初始化
|
|||
|
|
|||
|
要使用 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 的檢查以及確保提供了必需的參數。
|
|||
|
|
|||
|
## 貢獻
|
|||
|
|
|||
|
歡迎貢獻!如有任何增強或錯誤修復,請提出問題或提交拉取請求。
|