API для удаленной загрузки секретных данных на Thycotic Secret Server - PullRequest
0 голосов
/ 05 июля 2018

Я новичок в PowerShell, Thycotic Secret Server и в написании API. Мне было поручено написать API для удаленного доступа к Thycotic Secret Server и загрузить секрет вместе с прикрепленными файлами. К сожалению, я не получил стартовый блок. Я следую за кодом здесь:

https://thycotic.force.com/support/s/article/REST-API-PowerShell-Scripts-Getting-Started

Я скопировал: 3 - В поисках секретов 4 - Создать секрет и

Get-Token отсюда: https://thycotic.force.com/support/s/article/Secret-Server-Trial-Using-the-API

и создали функции для каждого. Единственные изменения, которые я сделал, - это изменить myurl, myusername и mypassword.

Это мой сценарий PowerShell:

$myUrl = "mysecretserver/Login.aspx?ReturnUrl=%2f"
$application = "https://mysecretserver/Login.aspx?ReturnUrl=%2fsecretserver"

# Ask for user name
$userName = Read-Host -Prompt "Please enter user name"
$userPassword = Read-Host -AsSecureString "Password"

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

Get-Token
Search-Secrets $userName,$userPassword
Create-Secret $userName,$userPassword 

Когда я запускаю Get-Token (в загруженный код не вносятся изменения)

function Get-Token
{
    [CmdletBinding()]
    Param(
        [Switch] $UseTwoFactor
    )

    $creds = @{
        username = $userName
        password = $userPassword
        grant_type = "password"
    };

    $headers = $null
    If ($UseTwoFactor) {
        $headers = @{
            "OTP" = (Read-Host -Prompt "Enter your OTP for 2FA (displayed in your 2FA app): ")
        }
    }

    try
    {
        $response = Invoke-RestMethod "$application/oauth2/token" -Method Post -Body $creds -Headers $headers;
        $token = $response.access_token;
        return $token;
    }
    catch
    {
        $result = $_.Exception.Response.GetResponseStream();
        $reader = New-Object System.IO.StreamReader($result);
        $reader.BaseStream.Position = 0;
        $reader.DiscardBufferedData();
        $responseBody = $reader.ReadToEnd() | ConvertFrom-Json
        Write-Host "ERROR: $($responseBody.error)"
        return;
    }
}

Кажется, все работает нормально, но когда я отображаю токен $, он пуст. Я не уверен на 100%, что это делает, и посмотрел множество примеров, но, похоже, не хватает основных шагов для чтения токена и использования его для доступа к секретному серверу. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 июля 2018

Замените URL вашего Секретного сервера на полное доменное имя сервера, а не веб-URL, который вы получаете в браузере. Вам нужно убедиться, что адрес Секретного Сервера правильный, иначе он не будет попадать в API (и, возможно, изменится из-за сбоя, поэтому вы не видите ошибок в функции Get-Token).

Например, вместо:

$application = "https://mysecretserver/Login.aspx?ReturnUrl=%2fsecretserver"

Это может быть что-то вроде:

$application = "https://mysecretserver.mydomain.com"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...