feat: 完成新版堡垒机token获取API的适配

This commit is contained in:
Boen_Shi 2026-04-29 10:25:59 +08:00
parent 6afa6d7169
commit 57f8f4492d
3 changed files with 17 additions and 2 deletions

View File

@ -69,3 +69,6 @@ BASTION_TOKEN_STATUS_ENDPOINT=/bastion_token/{task_id}
BASTION_TOKEN_TIMEOUT=30 BASTION_TOKEN_TIMEOUT=30
BASTION_TOKEN_POLL_ATTEMPTS=20 BASTION_TOKEN_POLL_ATTEMPTS=20
BASTION_TOKEN_POLL_INTERVAL_MS=500 BASTION_TOKEN_POLL_INTERVAL_MS=500
BASTION_TOKEN_TASK_TTL_SECONDS=1800
BASTION_TOKEN_SERVICE=https://myapp.cdu.edu.cn/index.html
BASTION_TOKEN_VERIFY_SSL=false

View File

@ -83,6 +83,8 @@ class BastionAccountController extends Controller
$submitEndpoint = (string) config('services.bastion_token.submit_endpoint', '/bastion_token'); $submitEndpoint = (string) config('services.bastion_token.submit_endpoint', '/bastion_token');
$timeout = (int) config('services.bastion_token.timeout', 30); $timeout = (int) config('services.bastion_token.timeout', 30);
$taskTtlSeconds = (int) config('services.bastion_token.task_ttl_seconds', 1800); $taskTtlSeconds = (int) config('services.bastion_token.task_ttl_seconds', 1800);
$service = (string) config('services.bastion_token.service', 'https://myapp.cdu.edu.cn/index.html');
$verifySsl = (bool) config('services.bastion_token.verify_ssl', false);
try { try {
$submitResponse = Http::baseUrl($baseUrl) $submitResponse = Http::baseUrl($baseUrl)
@ -92,6 +94,8 @@ class BastionAccountController extends Controller
->post($submitEndpoint, [ ->post($submitEndpoint, [
'username' => $account->username, 'username' => $account->username,
'password' => $account->password, 'password' => $account->password,
'service' => $service,
'verify_ssl' => $verifySsl,
]); ]);
if (! $submitResponse->successful()) { if (! $submitResponse->successful()) {
@ -209,8 +213,14 @@ class BastionAccountController extends Controller
} }
if (! (bool) ($taskMeta['finished'] ?? false)) { if (! (bool) ($taskMeta['finished'] ?? false)) {
$usmAuthentication = (string) data_get($taskResult, 'data.USM-AUTHENTICATION', ''); $usmAuthentication = (string) data_get($taskResult, 'data.bastion.token_cookies.USM-AUTHENTICATION', '');
$usm = (string) data_get($taskResult, 'data.USM', ''); $usm = (string) data_get($taskResult, 'data.bastion.token_cookies.USM', '');
// 向后兼容旧版任务服务返回结构
if ($usmAuthentication === '' || $usm === '') {
$usmAuthentication = (string) data_get($taskResult, 'data.USM-AUTHENTICATION', $usmAuthentication);
$usm = (string) data_get($taskResult, 'data.USM', $usm);
}
if ($usmAuthentication === '' || $usm === '') { if ($usmAuthentication === '' || $usm === '') {
return response()->json([ return response()->json([

View File

@ -39,6 +39,8 @@ return [
'poll_attempts' => (int) env('BASTION_TOKEN_POLL_ATTEMPTS', 60), 'poll_attempts' => (int) env('BASTION_TOKEN_POLL_ATTEMPTS', 60),
'poll_interval_ms' => (int) env('BASTION_TOKEN_POLL_INTERVAL_MS', 500), 'poll_interval_ms' => (int) env('BASTION_TOKEN_POLL_INTERVAL_MS', 500),
'task_ttl_seconds' => (int) env('BASTION_TOKEN_TASK_TTL_SECONDS', 1800), 'task_ttl_seconds' => (int) env('BASTION_TOKEN_TASK_TTL_SECONDS', 1800),
'service' => env('BASTION_TOKEN_SERVICE', 'https://myapp.cdu.edu.cn/index.html'),
'verify_ssl' => (bool) env('BASTION_TOKEN_VERIFY_SSL', false),
], ],
'bastion_access' => [ 'bastion_access' => [