Zum Hauptinhalt springen

Technischer Nutzer

Die Developer Portal-API mit einem technischen Nutzer verwenden

Der Unterschied zwischen der Frontend- und der Developer Portal-API liegt in der Art und Weise, wie Benutzer mit dem Developer Portal interagieren können.

Das Frontend bietet eine grafische Benutzeroberfläche (GUI), über die Nutzer mit dem Portal über einen Webbrowser interagieren können. Dies ist der Hauptweg, über den Benutzer mit dem Portal arbeiten und Aufgaben, wie das Erstellen von Apps, das Hinzufügen von API-Produkten und das Einreichen von Aktivierungsanfrage, durchführen können.

Auf der anderen Seite ermöglicht die API des Developer Portals Nutzern die programmatische Interaktion über Befehlszeilen-Tools oder Skripte. Dies ist eine alternative Methode, um mit dem Portal zu interagieren und richtet sich hauptsächlich an fortgeschrittene Benutzer oder automatisierte Workflows. Über die Developer Portal-API können Benutzer Aufgaben, wie das Erstellen von Bundles, das Hinzufügen von Produkten und das Verwalten von Aktivierungsanfrage, über Code anstelle der GUI durchführen.

  • Ein technischer Nutzer ist einer Organisation zugeordnet und nicht direkt mit einem natürlichen Benutzer verbunden.
  • Ein Nutzer einer Organisation mit Administratorrechten kann einen technischen Nutzer erstellen und über einen Zugriffs-Token auf die API des Portals zugreifen.
  • Ein Nutzer einer Organisation kann alle technischen Nutzer anzeigen, die mit seiner Organisation verknüpft sind.

Ablauf eines Zugriffs

Wie wird der technische Nutzer erstellt

Um den technischen Nutzer zu verwenden, musst du zuerst im Menü "Einstellungen" einen technischen Nutzer generieren.

Anlegen eines technischen Nutzers

  1. Gib dem technischen Nutzer einen Namen und
  2. erstelle diesen über den Button "Erstellen" neu.

Beispiel:

Technischen Nutzer erstellen
  1. Ein Modal wird geöffnet, das das Client-Secret und den Refresh-Token anzeigt.

Beispiel:

Hier werden Client-Secret und Refresh-Token einmal angezeigt.
  1. Speichere dir das Client-Secret und den Refresh-Token sicher, z.B. in einem Passwort-Manager, ab. Dies wird dir nur hier angezeigt. Du benötigst das Client-Secret und den Refresh-Token, um dir einen Access-Token am Identity-Access-Management-Server (IAM-Server) für den Zugriff auf die Developer Portal-API zu holen.
danger

Das Client-Secret und der Refresh-Token werden dir nur einmal angezeigt. Speichere diese beiden Informationen sicher bei dir ab.

Access-Token vom Identity-Access-Management-Server beziehen

Damit du auf die Developer Portal-API zugreifen kannst, benötigst du einen Access-Token, den du vom IAM-Server (Keycloak) beziehen kannst. Der Access-Token hat dann eine Laufzeit von 2 Stunden und muss nach dem Ablauf beim IAM-Server erneuert werden.

Benötigte Informationen für den Zugriff auf den IAM-Server

  • Client-Id (findest du in den Einstellungen bei deinem technischen Nutzer)
  • Client-Secret (wurde dir beim Generieren des technischen Nutzers angezeigt und hast du sicher gespeichert)
  • Refresh-Token (wurde auch beim Generieren des technischen Nutzers angezeigt und hast du bei dir sicher abgelegt)
  • Token-Endpunkt/URL (findest du in den Einstellungen bei deinem technischen Nutzer unter Schnittstelle)
  • Grant-Type (ist immer "refresh_token")

Zugriff auf den IAM-Server

Der Zugriff auf den IAM-Server erfolgt via API (Application Programming Interface). Hierzu siehe auch die aktuelle Keycloak (IAM-Server) Dokumentation.

EingabeParameterWert
Token-Endpunkt/URLPOST<server>/auth/realms/<realm>/protocol/openid-connect/token
HeaderContent-Typeapplication/x-www-form-urlencoded
HeaderAcceptapplication/json
Bodyclient_id<client_id>
Bodyclient_secret<client_secret>
Bodyrefresh_token<refresh_token>
Bodygrant_typerefresh_token

Beispiel:

Zugriffsinformationen:

Client-Id: 2ce233b7-9349-44d9-8e38-0a88090115d5
Client-Secret: asQx6IsK7hGGaUQIpE7bWEEjr72CGML9
Refresh-Token: eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2NmI5NzBkZC01ZDQyLTQ1ZGYtYjFkMi03Mjc1YzU5ZDI4YmMifQ.eyJpYXQiOjE2OTM5OTcyNDgsImp0aSI6ImM0MWE3ODk5LWI1NDAtNDcyOC05NDBhLWNkZmE2MmNjMGUzZCIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTA4MC9hdXRoL3JlYWxtcy93YWxsaXMiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjkwODAvYXV0aC9yZWFsbXMvd2FsbGlzIiwic3ViIjoiMzc3OWVlYjctZjllMi00ZTZkLTg4ZTQtZTBlZjFlZTg3NGEwIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6IjJjZTIzM2I3LTkzNDktNDRkOS04ZTM4LTBhODgwOTAxMTVkNSIsInNlc3Npb25fc3RhdGUiOiI3YjIyZDMwNC00NjA0LTQ2NTktODMxYi1kZDc2MjMyZDRjZDUiLCJzY29wZSI6InByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MiLCJzaWQiOiI3YjIyZDMwNC00NjA0LTQ2NTktODMxYi1kZDc2MjMyZDRjZDUifQ.JitaPbbqb9wVwXzooofxPILL_JCuIkr5KzfVWTV_mL8
Token-Endpunkt/URL: http://localhost:9080/auth/realms/wallis/protocol/openid-connect/token

Request (cURL):

curl --location 'http://localhost:9080/auth/realms/wallis/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Accept: application/json' \
--data-urlencode 'client_id=2ce233b7-9349-44d9-8e38-0a88090115d5' \
--data-urlencode 'client_secret=asQx6IsK7hGGaUQIpE7bWEEjr72CGML9' \
--data-urlencode 'refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2NmI5NzBkZC01ZDQyLTQ1ZGYtYjFkMi03Mjc1YzU5ZDI4YmMifQ.eyJpYXQiOjE2OTM5OTcyNDgsImp0aSI6ImM0MWE3ODk5LWI1NDAtNDcyOC05NDBhLWNkZmE2MmNjMGUzZCIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTA4MC9hdXRoL3JlYWxtcy93YWxsaXMiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjkwODAvYXV0aC9yZWFsbXMvd2FsbGlzIiwic3ViIjoiMzc3OWVlYjctZjllMi00ZTZkLTg4ZTQtZTBlZjFlZTg3NGEwIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6IjJjZTIzM2I3LTkzNDktNDRkOS04ZTM4LTBhODgwOTAxMTVkNSIsInNlc3Npb25fc3RhdGUiOiI3YjIyZDMwNC00NjA0LTQ2NTktODMxYi1kZDc2MjMyZDRjZDUiLCJzY29wZSI6InByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MiLCJzaWQiOiI3YjIyZDMwNC00NjA0LTQ2NTktODMxYi1kZDc2MjMyZDRjZDUifQ.JitaPbbqb9wVwXzooofxPILL_JCuIkr5KzfVWTV_mL8' \
--data-urlencode 'grant_type=refresh_token'

Response (json):

 {
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ3ZW1CbzNZdGZTdXdhbWFkbEdXRXEwaVV2b25seVdwMGZ6X2dIaHJpenVVIn0.eyJleHAiOjE2OTQwMDQ3MTksImlhdCI6MTY5Mzk5NzUxOSwianRpIjoiNWFkOTM1MjUtMGQ4Ni00MWZlLWI0NjUtZGJmYTRiNTJlMjFjIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo5MDgwL2F1dGgvcmVhbG1zL3dhbGxpcyIsInN1YiI6IjM3NzllZWI3LWY5ZTItNGU2ZC04OGU0LWUwZWYxZWU4NzRhMCIsInR5cCI6IkJlYXJlciIsImF6cCI6IjJjZTIzM2I3LTkzNDktNDRkOS04ZTM4LTBhODgwOTAxMTVkNSIsInNlc3Npb25fc3RhdGUiOiI3YjIyZDMwNC00NjA0LTQ2NTktODMxYi1kZDc2MjMyZDRjZDUiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwiZGVmYXVsdC1yb2xlcy13YWxsaXMiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwic2NvcGUiOiJwcm9maWxlIGVtYWlsIG9mZmxpbmVfYWNjZXNzIiwic2lkIjoiN2IyMmQzMDQtNDYwNC00NjU5LTgzMWItZGQ3NjIzMmQ0Y2Q1IiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJCZWlzcGllbC1OdXR6ZXIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiIwMTg3YmVmNS05Mjg2LTRhZGYtYTkzNy0zNjhlODlhNGFkZjEiLCJmYW1pbHlfbmFtZSI6IkJlaXNwaWVsLU51dHplciJ9.lAZwuSDc8yxm_jKSWxm6mxdTeFVmH5wGclsCE-TlIsoSdfIhOhfMSKd5Dwep4CQ6vpGLsX8tVjTEvkVyAzZMXeB3sHq8tCUsc0kMpINBxYeWanCSh6iVXM30ybyiYR8AkVxykcvcquzYkxPHT2nuMTMoMVPCRNg1SzjSyjQ3pa9J81yc7G5ksajH_4wIXYeX0TX-ZzT5U4d3GTfl3iIVU4B-TwqETTYETIz_3pAIHvLCtxwamI1ETenNG9y0k0hPuS0Wq9d0R8BVEnp1cbKNGxVx5dYDSoPFHPtNj_cGnQPZF_q9y4z9UCebkHBmKMA5bP2YA-Hl5edotgamHKCt0g",
"expires_in": 7200,
"refresh_expires_in": 0,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI2NmI5NzBkZC01ZDQyLTQ1ZGYtYjFkMi03Mjc1YzU5ZDI4YmMifQ.eyJpYXQiOjE2OTM5OTc1MTksImp0aSI6IjZhMjliZmViLTM2NmQtNDIzOC1hZmExLWEyZjk1MGNlNGRhMSIsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6OTA4MC9hdXRoL3JlYWxtcy93YWxsaXMiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjkwODAvYXV0aC9yZWFsbXMvd2FsbGlzIiwic3ViIjoiMzc3OWVlYjctZjllMi00ZTZkLTg4ZTQtZTBlZjFlZTg3NGEwIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6IjJjZTIzM2I3LTkzNDktNDRkOS04ZTM4LTBhODgwOTAxMTVkNSIsInNlc3Npb25fc3RhdGUiOiI3YjIyZDMwNC00NjA0LTQ2NTktODMxYi1kZDc2MjMyZDRjZDUiLCJzY29wZSI6InByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MiLCJzaWQiOiI3YjIyZDMwNC00NjA0LTQ2NTktODMxYi1kZDc2MjMyZDRjZDUifQ.qx9jDQnBIrznqsQulbfQsjpo4DlSCDErZ6vneBEqf0I",
"token_type": "Bearer",
"not-before-policy": 0,
"session_state": "7b22d304-4604-4659-831b-dd76232d4cd5",
"scope": "profile email offline_access"
}
info

Der Access-Token kann dann für den Zugriff auf die Developer Portal-API verwendet werden. Nach Ablauf von 2 Stunden ist ein neuer Access-Token beim IAM-Server zu beziehen (siehe Ablauf eines Zugriffs).