API 令牌在 Delinea 秘密服务器中不起作用

问题描述 投票:0回答:1

我在 Delinea Secret Server 中遇到 API 令牌问题。

我有一个可以访问大多数机密的域用户。 作为该用户,我可以使用凭据获取所有秘密。

所以在 powershell 中我可以这样做:

# Create creds object using username and password
$SScreds = New-Object System.Management.Automation.PSCredential($username,$SSsecurePwd)

$secretID = 138

$apiURL = “https://ssaddress/ss/winauthwebservices/api/v1/secrets/$SecretId”
$secret = Invoke-RestMethod $apiURL -credential $SScreds

现在……我想用令牌来完成,我想用Linux机器上的curl来完成。但让我们先用 Powershell 尝试一下。

$tokenRoute = https://ssaddress/ss/oauth2/token
    $creds = @{
        username = $username
        password = $password
        grant_type = "password"
    }


$TokResponse = Invoke-RestMethod $tokenRoute -Method Post -Body $creds
$token = $TokResponse.access_token

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "Bearer $token")

这会获取一个令牌并创建一个标头。标题看起来像这样:

Key           Value
---           -----
Authorization Bearer AgJzT9yIzwYeO6GDUJEOEnQXk0yHb5X3pKIBQFVod1W30JHVCAjllIr0uU_PH6wXHkw…

接下来,我尝试找出秘密:

$apiURL = “https://ssaddress/ss/winauthwebservices/api/v1/secrets/$SecretId”

$secret = Invoke-RestMethod $apiURL -Headers $headers

它失败了:

  "errorCode": "API_UserDoesNotHaveViewSecretPermission",
  "message": "The user does not have view secret permission."

我在 Linux 中使用 Postman 尝试了同样的方法。

令牌是使用用户名和密码创建的。该帐户可以访问机密,那么为什么该令牌不起作用? 在 Secret Server 中,当我查看秘密共享时,我看到该帐户具有“查看”甚至“所有者”权限。

我是否在 Secret Server 中缺少允许使用令牌读取机密的设置?

这就是我在 linux 机器上的 bash 中所做的。

首先获取access_token

token=$(curl   --request GET --location https://ssaddress/ss/oauth2/token \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "username=$user" \
--data-urlencode "password=$pass" \
--data-urlencode "grant_type=password")

access_token 如下所示:

{"access_token":"AgKPftIJXzzzzzzzzzdML9ixefDlto","token_type":"bearer","expires_in":1201}

然后修剪令牌以除去前导和尾随信息..

sstoken=`echo $token | cut -f 1 -d, | cut -f 2 -d : | sed 's/"//g'`

然后尝试获取秘密

curl --location --request GET https://ssaddress/ss/winauthwebservices/api/v1/secrets/128 --header "Authorization: Bearer $sstoken"

那失败了。

{
  "errorCode": "API_UserDoesNotHaveViewSecretPermission",
  "message": "The user does not have view secret permission."
}
bash powershell api curl
1个回答
0
投票

解决了!

网址不正确:

 $apiURL = “https://ssaddress/ss/winauthwebservices/api/v1/secrets/$SecretId”

应该是:

$apiURL = “https://ssaddress/ss/api/v1/secrets/$SecretId”
© www.soinside.com 2019 - 2024. All rights reserved.