Im Grant Flow gibt es zwei Möglichkeiten, wie der Auth Token abgerufen werden kann. Für den Credential Flow gilt nur Variante A.
Innerhalb der Gültigkeitsdauer muss der Token in einem POST-Request verwendet werden, um die angeforderten Daten zu erhalten. Für den Nutzer bedeutet dies in der Regel, den Token in ein dafür vorgesehenes Feld einzugeben, das von den Entwicklern bereitgestellt wird. Dies kann jedoch mit Variante B auch automatisiert werden.
Variante A
Ablauf:
- Der Benutzer loggt sich in seinen Account(HIN e-ID) ein und navigiert dann zu apps.hin.ch.
- Dort wird die Option für die ID-Delegation ausgewählt, und der passende Token wird ausgewählt.
- Der Token wird kopiert und angezeigt. Dieser Token ist eine lange Zeichenkette.
Bei dieser Variante muss der Benutzer oder Techniker den Auth Token über den Webbrowser abrufen. Der Token ist nur für 10 Minuten gültig, ähnlich wie ein einmaliges Passwort (OTP).

Beim Zugriff auf apps.hin.ch wird standardmässig das erste Register («HIN Mail») angezeigt. Um das Ganze für den Anwender zu vereinfachen, können die Auth Codes über einen Direktlink bezogen werden:
http://apps.hin.ch/#app=HinCredMgrOAuth;tokenGroup=
Variante B – (oder Variante A automatisieren)
Ablauf
- Link Bauen, mittels HIN Parameter.
- User authentifiziert sich via e-ID und erhält ein Pop mit Ja und Nein Auswahlmöglichkeiten.
- Authentifizierung und Redirect:
Nach erfolgreicher Anmeldung wird der Benutzer auf eine URL weitergeleitet(die man HIN mitteilen muss), die den Auth Token als URL-Parameter enthält. Zum Beispiel:https://example.com/callback?Code=iwdjoijwiw90dj9j2odij2oijwoidwd
- Token-Extraktion im Backend:
Der Server empfängt die Anfrage und extrahiert den Auth Token aus der URL. Der Token befindet sich im Parameter «Code» (z.B.Code=iwdjoijwiw90dj9j2odij2oijwoidwd
). - Bezug des HIN Access-Tokens.
Link bauen
http://apps.hin.ch/REST/v1/Oauth/GetAuthCode/<TOKEN-GRUPPE>?response_type=code&client_id=<CLEINT_ID>&redirect_uri=<CREDIRECT_URI_ENCODED>&state=<STATE>
Die Redirect_URI wird über die aufgerufene URL mitgegeben:
http://apps.hin.ch/REST/v1/0Auth/GetAuthCode/<Token-Gruppe>?response_type=code&client_id=client_id›&redirect_uri=<Redirect_URI>&state=<state>
Beispiel Request für die Applikation «ACS-Applikation»:
http://apps.hin.ch/REST/v1/0Auth/GetAuthCode/ACS-Applikation?response_type=code&client_id=ch.hin&redirect_uri=https%3A%2F%2Fwww.hin.ch&state=teststate
Wenn man den link im Browser öffnet sieht dann folgendes:

Bei dieser Variante wird der Auth Token dann direkt über einen Redirect bereitgestellt. Nach einer erfolgreichen Anmeldung (JA) erfolgt eine automatische Weiterleitung auf eine andere Seite, die wir bei uns im Backend eintragen müssen, wobei der Auth Token in der URL als Parameter übergeben wird. Der Token könnte zum Beispiel so aussehen: Code=iwdjoijwiw90dj9j2odij2oijwoidwd
.
Ablauf im Backend:
Der Server empfängt diese URL und extrahiert den Token aus dem URL-Parameter. In diesem Fall handelt es sich um den Parameter Code
, der den Token iwdjoijwiw90dj9j2odij2oijwoidwd
enthält.
Beispiel mittels Python:
# Beispiel für Flaskfrom flask import request @app.route('/callback') def callback(): # Extrahiere den 'code'-Parameter aus der URL auth_token = request.args.get('code') # Weiterverarbeitung des Tokens... |