Die Enterprise Plus Edition verfügt über eine REST API: Über diese Schnittstelle ist es Ihnen möglich, Password Safe von außen anzusprechen, um beispielsweise Daten für andere Programme auszulesen. Die REST API ist ausschließlich über unsere Wrapper mit C# und JavaScript ansprechbar.

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

Voraussetzungen und Download

Die API ist ausschließlich in der Enterprise Plus Edition verfügbar. Im Kunden Informations System können Sie den API-Client für die gewünschte Programmiersprache herunterladen. Um die API nutzen zu können, aktivieren Sie im AdminClient, im Modul WebClient, die Webservices.

Verwendung der API

Das zentrale Objekt ist „PsrApi“. Dieses enthält diverse „Manager“, die die gesamte Business-Logik enthalten. Zunächst muss ein „PsrApi“-Objekt angelegt werden. Der einzige Übergabeparameter dieser Klasse ist der Endpoint der Password Safe WebServices. Falls Sie den WebClient einsetzen, können Sie “aufruf-des-webclient/api” als Endpoint verwenden. Andernfalls verwenden Sie direkt der Password Safe Server, also “ip-des-servers:11016”.

C#

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

JavaScript

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

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. Beachten Sie, 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ückgegeben.

C#

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

JavaScript

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

Methoden

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

C#

using System;
using System.Linq;
using System.Threading.Tasks;
using PsrApi.Data;
using PsrApi.Data.Enums;


namespace CSharpSDK
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // Nach dem login können Sie alle Funktionen der API nutzen.
            // Setzen Sie an den mit # markierten Stellen Ihre Zugangsdaten ein.
            var psrApi = new PsrApi.PsrApi("#");
            await psrApi.AuthenticationManager.Login("#", "#", "#");

            // Passwörter sind im Kontext der API Container.
            // Für die Handhabung ist der ContainerManager notwendig.
            var conMan = psrApi.ContainerManager;

            // Um nach bestimmten Passwörtern filtern zu können, benötigen Sie
            // einen Filter vom Typ PsrListFilterGroupContent. Dazu müssen Sie
            // den Standard-Filter für Passwörter abrufen.
            var passwordListFilter = await conMan.GetContainerListFilter(
                PsrContainerType.Password, true);

            // In einem zweiten Schritt können Sie den Standardfilter nach einem
            // Filterobjekt vom Typ PsrListFilterGroupContent durchsuchen.
            var contentFilter = passwordListFilter.FilterGroups
                .OfType<PsrListFilterGroupContent>().FirstOrDefault()
                ?.SearchList.FirstOrDefault();

            if (contentFilter != null)
            {
                // Ersetzen Sie die Stelle # mit Ihrem Suchbegriff.
                // Zudem muss der Filter als Aktiv markiert werden.
                contentFilter.Search = "#";
                contentFilter.FilterActive = true;
            }

            // Jetzt können Ihre gesuchten Passwörter mit Hilfe des
            // vorher konfigurierten Filters abgerufen werden.
            var passwords = await conMan.GetContainerList(
                PsrContainerType.Password, passwordListFilter);

            var passwordContainer = passwords.FirstOrDefault();
            if (passwordContainer != null)
            {
                // Um Ihr gesuchtes Passwort im Klartext sichtbar machen zu können,
                // müssen Sie nach dem ersten Passwortfeld in der Liste
                // von ContainerItems in Ihrem Passwort suchen.
                var passwordItem = passwordContainer.Items
                    .FirstOrDefault(i => i.ContainerItemType == PsrContainerItemType.ContainerItemPassword);

                // Das gefundene ContainerItem kann dann entschlüsselt werden.
                var decryptedPasswordString = await conMan.DecryptContainerItem(passwordItem);

                // Danach können Sie das Passwort im Klartext verwenden.
               Console.WriteLine("Your password is: " + decryptedPasswordString);
            }

            // Wird die API nicht mehr benötigt, müssen Sie sich wieder
            // von der aktuellen Sitzung abmelden.
            await psrApi.AuthenticationManager.Logout();
        }
    }
}

JavaScript

(async function() {

  const { PsrApi, PsrApiEnums } = require('./src/psrApi')
  const { PsrContainerType, PsrContainerItemType } = PsrApiEnums

  // Nach dem login können Sie alle Funktionen der API nutzen.
  // Setzen Sie an den mit # markierten Stellen Ihre Zugangsdaten ein.
  const psrApi = new PsrApi('#')
  await psrApi.authenticationManager.login('#', '#', '#')

  // Passwörter sind im Kontext der API Container.
  // Für die Handhabung ist der ContainerManager notwendig.
  const conMan = psrApi.containerManager

  // Um nach bestimmten Passwörtern filtern zu können, benötigen Sie
  // einen Filter vom Typ PsrListFilterGroupContent. Dazu müssen Sie
  // den Standard-Filter für Passwörter abrufen.
  const passwordListFilter = await conMan.getContainerListFilter(
    PsrContainerType.Password, true)

  // In einem zweiten Schritt können Sie den Standardfilter nach einem
  // Filterobjekt vom Typ PsrListFilterGroupContent durchsuchen.
  const contentFilter = passwordListFilter.FilterGroups
    .find(fg => 'SearchList' in fg).SearchList[0]

  if (contentFilter) {
    // Ersetzen Sie die Stelle # mit Ihrem Suchbegriff.
    // Zudem muss der Filter als Aktiv markiert werden.
    contentFilter.Search = '#'
    contentFilter.FilterActive = true
  }

  // Jetzt können Ihre gesuchten Passwörter mit Hilfe des
  // vorher konfigurierten Filters abgerufen werden.
  const passwords = await conMan.getContainerList(
    PsrContainerType.Password, passwordListFilter)

  const passwordContainer = passwords[0]
  if (passwordContainer) {
    // Um Ihr gesuchtes Passwort im Klartext sichtbar machen zu können,
    // müssen Sie nach dem ersten Passwortfeld in der Liste
    // von ContainerItems in Ihrem Passwort suchen.
    const passwordItem = passwordContainer.Items
      .find(i => i.ContainerItemType === PsrContainerItemType.ContainerItemPassword)

    // Das gefundene ContainerItem kann dann entschlüsselt werden.
    const decryptedPasswordString = await conMan.decryptContainerItem(passwordItem)

    // Danach können Sie das Passwort im Klartext verwenden.
    console.log('Your password is: ', decryptedPasswordString)
  }

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

})()

Technische Dokumentation

Die komplette technische Dokumentation der API finden Sie unter folgendem Link: 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.