Secret Server Webservices can be called using scripts. This example demonstrates how to authenticate, retrieve a Secret, and update a Secret programatically in PHP. This is a working example for Secret Server Online; a test user infromation has been filled in and OrganizationCode passed in. The test user has been restricted to only viewing and editing this one Secret. There is also a
perl script example.
If connecting to an Installed instance
change the url to match your site and pass in empty string for organizationCode.
------------------------------------------------------------------------------------
php.ini
These modules will need to be enabled in the php.ini
extension_dir = "ext"
(depends on path to extension directory)
.
extension=php_soap.dll
extension=php_openssl.dll
Script
<?php
$secretServerURL = "https://www.secretserveronline.com/webservices/SSWebService.asmx?WSDL";
//$secretServerURL = "http://localhost/ihawu/webservices/SSWebService.asmx?WSDL";
$username = "thycotictest";
$password = "passwordt";
$organizationCode= "RT9R"; //only needed for Secret Server Online account
$secretId = 154178;
//Create the SOAP Client
print $secretServerURL."\n";
print "\n";
print "\n";
$soapClient = new SoapClient($secretServerURL);
//Get Version (simpliest call)
$versionResult = $soapClient->__soapCall("VersionGet", array());
$version = $versionResult->VersionGetResult->Version;
print "Secret Server Version is ".$version;
print "\n";
print "\n";
//Authenticate
$params = array();
$params["username"] = $username;
$params["password"] = $password;
$params["organization"] = $organizationCode;
$authenticationResult = $soapClient->Authenticate($params);
$errors = (array) $authenticationResult->AuthenticateResult->Errors;
if(count($errors) > 0)
{
print "Login Error for user(".$username.") : ".$errors["string"]."\n";
return;
}
print "Login Successful \n\n";
$token = $authenticationResult->AuthenticateResult->Token;
//Load the Secret
$params = array();
$params["token"] = $token;
$params["secretId"] = $secretId;
$secretGetResult = $soapClient->GetSecret($params);
//var_dump($secretGetResult);
$errors = (array) $secretGetResult->GetSecretResult->Errors;
if(count($errors) > 0)
{
print "Error getting Secret Id (".$secretId.") : ".$errors["string"]."\n";
return;
}
$secret = $secretGetResult->GetSecretResult->Secret;
$secretTemplateId = $secret->SecretTypeId;
$secretName = $secret->Name;
$secretItems = (array)$secret->Items->SecretItem;
print "Secret Name: ".$secretName."\n\n";
foreach ($secretItems as $secretItem)
{
$fieldName = $secretItem->FieldName;
$fieldValue = $secretItem->Value;
print $fieldName." : ".$fieldValue."\n";
}
print "\n\n";
//Update the Notes Field on the Secret
$updatedSecret = $secret;
//var_dump($secret);
$timestamp = @date("M-d-Y h:i:s",time());
$updatedValue = "This value was updated through webservices at ".$timestamp;
$indexOfNotes = 3;
print "Updating the Field (".$updatedSecret->Items->SecretItem[$indexOfNotes]->FieldName.") to : \n'".$updatedValue."'\n\n";
$updatedSecret->Items->SecretItem[$indexOfNotes]->Value = $updatedValue;
$params = array();
$params["token"] = $token;
$params["secret"] = $updatedSecret;
$secretUpdateResult = $soapClient->UpdateSecret($params);
$errors = (array) $secretUpdateResult->UpdateSecretResult->Errors;
if(count($errors) > 0)
{
print "Error updating Secret Id (".$secretId.") : ".$errors["string"]."\n";
return;
}
print "Update Successful\n\n";
?>
Article ID: 110, Created On: 10/8/2010, Modified: 12/15/2011