Skip to content
Snippets Groups Projects
nuget-readme.md 3.7 KiB
Newer Older
Klaus Fischer's avatar
Klaus Fischer committed
# FIT-Connect .NET SDK User Guide

## Einleitung

Das FIT-Connect .NET SDK bietet eine einfache Möglichkeit, sowohl einen Antragsteller (Sender) als auch einen Antragsempfänger (Subscriber) an FIT-Connect anzubinden.

## Voraussetzungen

### OSX

Auf OSX wird das SDK nur dann unterstützt, wenn OpenSSL auf dem System installiert ist.
Zum Installieren von OpenSSL können Sie Homebrew verwenden:
Klaus Fischer's avatar
Klaus Fischer committed

```sh
brew install openssl@1.1
```

Die Environment-Variable ```DYLD_LIBRARY_PATH``` muss auf den Pfad zu OpenSSL verweisen.

_Beispiele:_

```sh
export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib
export DYLD_LIBRARY_PATH=/usr/local/opt/openssl@1.1/lib
```

### Sender

Um einen Antrag mit dem SDK versenden zu können, werden eine ClientID und ein ClientSecret benötigt.
Diese können im FIT-Connect Self-Service-Portal erzeugt werden.
[Hier](https://docs.fitko.de/fit-connect/docs/getting-started/account) ist beschrieben, wie Sie eine ClientID und ein ClientSecret erhalten.
Klaus Fischer's avatar
Klaus Fischer committed

[Offizelle Dokumentation von FIT-Connect zum Versenden von Einreichungen (Anträgen)](https://docs.fitko.de/fit-connect/docs/sending/overview)

### Subscriber

Der Subscriber benötigt eine ClientID, ein ClientSecret und zwei Schlüsselpaare zur Verschlüsselung und zum Signieren der Daten.
Klaus Fischer's avatar
Klaus Fischer committed
Zu Testzwecken können selbstgenerierte Schlüsselpaare mit dem [hierzu bereitgestellten Tool](https://docs.fitko.de/fit-connect/docs/details/jwk-creation) erzeugt werden.

In der Produktivumgebung müssen hierzu [Zertifikate der Verwaltungs-PKI zu Einsatz kommen](https://docs.fitko.de/fit-connect/docs/receiving/certificate).

[Offizielle Dokumentation von FIT-Connect zum Abrufen von Einreichungen](https://docs.fitko.de/fit-connect/docs/receiving/overview)

# Beispiele

## Sender

```csharp
var submission = Client
    .GetSender(FitConnectEnvironment.Testing, clientId, clientSecret, logger)
Klaus Fischer's avatar
Klaus Fischer committed
    .WithDestination(destinationId)
    .WithServiceType("FIT Connect Demo", leikaKey)
    .WithAttachments(new Attachment("Test.pdf", "Test Attachment"))
    .WithData("{\"message\":\"Hello World\"}")
    .Submit();
```

Im Beispiel oben stellt das Argument "FitConnectEnvironment.Testing" die FIT-Connect-Endpunkte zur Verfügung, die aufgerufen werden sollen.
Das Argument 'destinationId" liefert die Adresse des Fachverfahrens, das die Antragsdaten über FIT-Connect erhalten soll.
Das Argument "leikaKey" enthält die ID der beantragten Leistung. "leika' ist die Abkürzung für "Leitungskatalog".

Klaus Fischer's avatar
Klaus Fischer committed
## Subscriber

### Erstellen des Subscribers

```csharp
var subscriber = Client.GetSubscriber(FitConnectEnvironment.Testing, clientId,
Klaus Fischer's avatar
Klaus Fischer committed
    clientSecret,
    privateKeyDecryption,
    privateKeySigning,
    publicKeyEncryption,
    publicKeySignatureVerification,
    logger);
```

Im Beispiel oben stellt das Argument "privateKeyDecryption" den JSON Web Key (JWK) für den privaten Schlüssel zum Entschlüsseln bereit.
Das Argument 'privateKeySigning" liefert den JWK des privaten Schlüssels zum Signieren.
Das Argument 'publicKeyEncryption" liefert den JWK des öffentlichen Schlüssels zum Verschlüsseln.
Das Argument 'publicKeySignatureVerification" liefert den JWK des öffentlichen Schlüssels zum Überprüfen der Signatur.

Klaus Fischer's avatar
Klaus Fischer committed
### Abrufen der Submissions

```csharp
var submissions = subscriber.GetAvailableSubmissions();
```

### Abrufen der Submissions mit den Anhängen

```csharp
foreach (var submission in submissions) {
    var subscriberWithSubmission = subscriber.RequestSubmission(submission.SubmissionId);
    var data = subscriber.GetDataJson();
    var attachments = subscriberWithSubmission
        .GetAttachments();
    // Submission accept
    subscriberWithSubmission
        .AcceptSubmission();
    // or submission reject
   subscriberWithSubmission
        .RejectSubmission();

}
```