In der Enterprise Plus Edition steht eine REST API zur Verfügung. Über diese Schnittstelle ist es möglich Password Safe “von außen anzusprechen” um beispielsweise Daten für andere Programme auszulesen.
Die API ist für C# und JavaScript verfügbar.

In der JavaScript Version der API sind alle Enums unter dem globalen Objekt “PsrApiEnums” zu finden.

Voraussetzungen und Download

Die API ist ausschließlich in der Enterprise Plus Edition verfügbar. Im Kunden Informations System kann der API-Client für die gewünschte Programmiersprache herunter geladen werden. Um die API nutzen zu können müssen im AdminClient, im Modul WebClient die Webservices aktiviert werden.

Verwendung der API

Das zentrale Objekt ist „PsrApi“. Dieses enthält diverse „Manager“, welche die gesamte Business Logik enthalten. Zunächst muss ein „PsrApi“-Objekt angelegt werden, der einzige Übergabeparameter dieser Klasse ist der Hostname oder die IP-Adresse des Endpoints (= Password Safe Server).

C#

var psrApi = new PsrApi(„passwordsafe.company.com“);

JavaScript

const psrApi = new PsrApi(„passwordsafe.company.com“)

Login

Ohne einen vorherigen Login ist die Verwendung der API nicht möglich. Der erste Parameter der Login-Methode ist die gewünschte Datenbank, gefolgt von Benutzername und dem Passwort. Zu Beachten gilt, dass alle Methoden der API, die einen Server-Call nach sich ziehen, asynchron implementiert sind. In C# werden also Objekte des Typs „Task“ und in JavaScript Objekte des Typs „Promise“ zurück gegeben.

C#

await psrApi.AuthenticationManager.Login(„Company“, „username“, „password“);

JavaScript

await psrApi.authenticationManager.login(„Company“, „username“, „password“)

Methoden

Anschließend können alle Methoden der API verwendet werden. So kann mann beispielsweise nach Datensätzen suchen und ein Passwort entschlüsseln:

C#

// Passwörter, Formulare und Dokumente sind alle Container
var conMan = psrApi.ContainerManager;

// Den Standard-Filter für Passwörter abrufen
var passwordListFilter = await conMan.GetContainerListFilter(PsrContainerType.Password, true);

var contentFilter = passwordListFilter.FilterGroups.OfType<PsrListFilterGroupContent>().FirstOrDefault()?.SearchList.FirstOrDefault();
if (contentFilter != null)
{
    // Nach Passwörtern suchen, die „mateso“ enthalten
    contentFilter.Search = "mateso";
    contentFilter.FilterActive = true;
}

// Alle Passwörter abrufen, die dem Filter entsprechen
var passwords = await conMan.GetContainerList(PsrContainerType.Password, passwordListFilter);

// Das Formularfeld vom Typ Passwort suchen
var passwordItem = passwords.FirstOrDefault(p => p.Items.Any(i => i.ContainerItemType == PsrContainerItemType.ContainerItemPassword))?.Items.FirstOrDefault(i => i.ContainerItemType == PsrContainerItemType.ContainerItemPassword);
if (passwordItem != null)
{
    // Wert des Formularfelds entschlüsseln
    var plainText = await conMan.DecryptContainerItem(passwordItem);
    Console.WriteLine("Plaintext value of the container item: " + plainText);
}

// Logout nach vollendeter Arbeit nicht vergessen, um tote Sitzungen zu verhindern
await psrApi.AuthenticationManager.Logout();

JavaScript

// Passwörter, Formulare und Dokumente sind alle Container
const conMan = psrApi.containerManager

// Den Standard-Filter für Passwörter abrufen
const passwordListFilter = await conMan.getContainerListFilter(PsrApiEnums.PsrContainerType.Password, true)

const contentFilter = passwordListFilter.FilterGroups.find(fg => 'SearchList' in fg).SearchList[0]
if (contentFilter) {
  // Nach Passwörtern suchen, die "mateso" enthalten
  contentFilter.Search = 'mateso'
  contentFilter.FilterActive = true
}

// Alle Passwörter abrufen, die dem Filter entsprechen
const passwords = await conMan.getContainerList(PsrApiEnums.PsrContainerType.Password, passwordListFilter)

// Das Formularfeld vom Typ Passwort suchen
const passwordItem = passwords
  .find(p => p.Items.some(i => i.ContainerItemType === PsrApiEnums.PsrContainerItemType.ContainerItemPassword)).Items
  .find(i => i.ContainerItemType === PsrApiEnums.PsrContainerItemType.ContainerItemPassword)
if (passwordItem) {
  // Wert des Formularfelds entschlüsseln
  const plainText = await conMan.decryptContainerItem(passwordItem)
  console.log('Plaintext value of the container item: ' + plainText)
}

// Logout nach vollendeter Arbeit nicht vergessen, um tote Sitzungen zu verhindern
await psrApi.authenticationManager.logout()

Technische Dokumentation

Die komplette technische Dokumentation der API ist unter folgendem Link zu finden: Password Safe API

War das hilfreich?

Ja Nein
You indicated this topic was not helpful to you ...
Could you please leave a comment telling us why? Thank you!
Thanks for your feedback.