Authentisierung für PIS und KIS
Authentisierungsmethode für das Ausstellen eines E-Rezepts
Als Authentisierungsmethode wird oAuth2 eingesetzt. Die ausführliche Dokumentation, wie der oAuth2 Service von HIN implementiert, finden Sie hier: https://cdn.hin.ch/oauth2/manual/DE/Auth-Code/Auth-Code-Einleitung.html
Nachfolgend wird in der Schritt-für-Schritt Anleitung erklärt, wie die Erstellung und Signierung eines E-Rezepts durchgeführt wird. Das erste Bearer Token ist 30 Tage lang gültig und kann mittels Refresh Token beliebig oft ohne Bestätigung des Users erneuert werden. Das zweite Bearer Token (=auth handle) ist exaxt 12 Stunden lang gültig und kann nicht automatisiert erneuert werden. Der Neubezug eines neuen auth handles bedingt eine erneute Bestätigung im Browserfenster durch den User.
Bitte beachten Sie, dass die URLs case-sensitive sind:
- Es wird ein oAuth2 auth code benötigt, das auf zwei verschiedene Arten bezogen werden kann:
Variante 1: auf https://apps.hin.ch -> ID Delegation für «HIN Authservice INT» bzw. «HIN Authservice» oder
Variante 2: über die URL (die redirect_uri wird von Ihnen bestimmt und muss dem HIN Support zur Hinterlegung mitgeteilt werden)
http://apps.hin.ch/REST/v1/OAuth/GetAuthCode/hin_authservice_int?response_type=code&client_id=<client_id>&redirect_uri=http%3A%2F%2Flocalhost%2FgetAccessToken- Der oAuth2 auth code muss mit folgendem Befehl in ein Bearer Token umgewandelt werden:
curl -H "Content-Type: application/x-www-form-urlencoded"
--data "grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost%2FgetAccessToken&code=<auth_code>&client_id=<client_id>&client_secret=<client_secret>" https://oauth2.hin.ch/REST/v1/OAuth/GetAccessTokenACHTUNG
redirect_uri leer lassen, falls der auth code über apps.hin.ch gelöst wurde.
- Login durchführen (Bsp für INT-Umgebung):
curl --request POST --url 'https://oauth2.authservice-int.hin.ch/v1/oauth?targetUrl=http%3A%2F%2Flocalhost%2Fsuccess&style=redirect' --header 'accept: application/json' --header 'Authorization: Bearer <bearer_token_for_auth_service>'Die retournierte URL wird aufgerufen und der oAuth auth code kopiert.
oAuth code in Auth Handle umwandeln (Bsp für INT-Umgebung):
curl --request POST --url 'https://oauth2.authservice-int.hin.ch/v1/oauth/auth_handle' -d '{\"authCode\":\"<auth_code>\"}' --header 'accept: application/json' --header 'Content-Type: application/json' --header 'Authorization: Bearer <oauth_token_for_auth_service>'- Retourniertes Auth Handle:
{
"authHandle":"wnVQZ54aG3348lxUO5tw"
}Mitgabe des oAuth/JWT Tokens: Diese 2 Varianten zur Mitgabe des Tokens werden angeboten.
- als Präfix im Authorization Header:
--header 'Authorization: Bearer acs:{bearer token}' - als eigener Header (oAuth Standard):
--header 'Token-Type: HIN_ACS' --header 'Authorization: Bearer {bearer token}'
Der Token-Type Header lässt folgende Typen zu:
- OAUTH: für das Signieren
- HIN_JWT: für die Abgabe mittels OVAN ID
- HIN_ACS: für die Abgabe mittel HIN ID
Umgebungsvariablen
| Identifier | TEST | PROD |
|---|---|---|
| token group | hin_authservice_int | hin_authservice |
| ServiceUrl | oauth2.authservice-int.hin.ch/v1/oauth/auth_handle | oauth2.authservice.hin.ch/v1/oauth/auth_handle |