Beispielablauf für Services mit Benutzerkontext
Das folgende Diagramm veranschaulicht den Austausch von Authentifizierungs- und Autorisierungsinformationen für Services mit Benutzerkontext. Die Farben stehen für Folgendes:
- Orange: Anmeldeinformationen
- Blau: Endpunktzugriffsinformationen
- Grün: Ressourcenzugriffsinformationen
- Rot: Proxy-Benutzer- und Sitzungsinformationen
Einige Werte werden verwendet, um mehrere Zugriffsarten zu bestimmen. Diese Werte erscheinen zunächst in schwarz (wenn sie nicht für einen speziellen Zugriffstyp gelten) und dann später in einer oder mehreren bestimmten Farben (als Identifizierung des Werts, der zu diesem Zeitpunkt im Prozess für eine bestimmte Zugriffsart verwendet wird).
Services mit Benutzerkontext: interne Benutzer
Im folgenden Beispiel wird ein API-Aufruf von der Acme-Policenabrechnungsanwendung BillingApp im Namen von Alice Applegate ausgelöst, die eine interne Benutzerin ist.

- Wenn die BillingApp einen API-Aufruf auslöst, muss sie zuerst ein JWT vom Guidewire Hub anfordern. Die Anforderung des JWT umfasst die Client-ID (
0oaqt9pl1vZK1kybt0h7), das Geheimnis (aSecret), die API-Rolle der Anwendung (scp.pc.acme_billingApp), die Ressourcenzugriffsstrategie der Anwendung (pc.service), die Tatsache, dass der Aufruf für einen Benutzer (pc.allowusercontext) erfolgt, und zusätzliche Bereitstellungsinformationen (tenant.acme,project.default,planet_class.prod). - Guidewire Hub authentifiziert die Services basierend auf der Client-ID und dem Geheimnis. Außerdem wird verifiziert, dass die API-Rolle und die Ressourcenzugriffsstrategie in der Anforderung mit den Angaben übereinstimmen, die bei der Registrierung des Services bei Guidewire Hub angegeben wurden.
- Guidewire Hub generiert ein JWT und sendet es an den Service. Dieses JWT enthält die Client-ID (
cid) und einenscp-Token-Claim, der die API-Rolle (scp.pc.acme_billingapp), die Ressourcenzugriffsstrategie (pc.service), den Wertpc.allowusercontext(der angibt, dass Benutzerinformationen in einem zusätzlichen Benutzerkontext-Header angegeben sind) und zusätzliche Bereitstellungsinformationen enthält. - Der Service sendet die API-Anforderung zusammen mit dem JWT und einem Benutzerkontext-Header, der den Benutzer (
aapplegate@acme.com), die Ressourcenzugriffsstrategie des Benutzers (pc_username) und die Ressourcenzugriffs-ID (aapplegate@acme.com) angibt, an PolicyCenter. - PolicyCenter muss den Endpunktzugriff sowohl auf der Serviceebene als auch auf der Benutzerebene bestimmen. Der Vorgang beginnt auf der Serviceebene. Ausgehend vom API-Rollenwert im JWT (
scp.pc.acme_billingapp) wird der Zugriff auf der Serviceebene mithilfe der API-Rollendateiacme_billingapp.role.yamldefiniert. - Als Nächstes bestimmt PolicyCenter den Endpunktzugriff auf der Benutzerebene.
- Mit dem Benutzernamen im Benutzerkontext-Header (
aapplegate@acme.com) fragt PolicyCenter die Benutzerrollen ab, die dieser Benutzer hat. Eine Rolle wird zurückgegeben:Underwriter. - Ausgehend von der zurückgegebenen Rolle wird die
Underwriter.role.yaml-API-Rollendatei verwendet, um den Zugriff auf der Benutzerebene zu definieren.
- Mit dem Benutzernamen im Benutzerkontext-Header (
- PolicyCenter muss auch den Ressourcenzugriff sowohl auf der Serviceebene als auch auf der Benutzerebene bestimmen. Der Vorgang beginnt mit der Ressourcenzugriffsstrategie auf der Serviceebene. Ausgehend von dem im JWT enthaltenen Wert der Ressourcenzugriffsstrategie (
pc.service) wird der Ressourcenzugriff auf der Serviceebene laut Definition in der Dateiserviceaccess.yamlgewährt. (* PolicyCenter beginnt mitservice_ext-1.0.access.yaml, aber diese Datei verweist auf zusätzlicheaccess.yaml-Dateien, deren Namen mit „service“ beginnen.) - PolicyCenter bestimmt die Ressourcenzugriffsstrategie auf der Benutzerebene. Ausgehend vom Wert der Ressourcenzugriffsstrategie im Benutzerkontext-Header (
pc_username) wird der Ressourcenzugriff auf Benutzerebene laut Definition in deninternalaccess.yaml-Dateien gestattet. (* PolicyCenter beginnt mitinternal_ext-1.0.access.yaml, aber diese Datei verweist auf zusätzlicheaccess.yaml-Dateien, deren Namen mit „internal“ beginnen.) - Proxy-Benutzerzugriff ist für Services mit Benutzerkontext nicht relevant, wenn der Benutzer ein interner Benutzer ist.
- PolicyCenter verarbeitet die Anforderung.
- Der Sitzungsbenutzer ist der interne Benutzer:
aapplegate@acme.com. - Der Endpunktzugriff ist die Schnittmenge der auf der Serviceebene (
acme_billingapp.role.yaml) und auf der Benutzerebene (Underwriter.role.yaml) definierten Endpunkte und Operationen. Endpunkte, Operationen und Felder müssen auf beiden Ebenen enthalten sein, damit sie für den Aufruf verfügbar sind. - Der Ressourcenzugriff ist die Schnittmenge zwischen den Ressourcen, auf die der Service zugreift (wie in
serviceaccess.yamldefiniert) und den Ressourcen, die dem Benutzer zur Verfügung stehen (wie ininternalaccess.yamlmit der Ressourcenzugriffs-ID vonaapplegate@acme.comdefiniert). In der Basiskonfiguration werden alle Ressourcen durch die Dateienserviceaccess.yamlzur Verfügung gestellt. Daher gibt der Ressourcenzugriff auf der Serviceebene logisch betrachtet keine Einschränkungen an. Der Aufruf kann auf jede Ressource zugreifen, sofern sie über den Ressourcenzugriff auf der Benutzerebene verfügbar ist.
- Der Sitzungsbenutzer ist der interne Benutzer:
- PolicyCenter stellt die Antwort auf den ersten Aufruf bereit.
Services mit Benutzerkontext: externe Benutzer
Im folgenden Beispiel wird ein API-Aufruf von der Acme-Policenabrechnungsanwendung BillingApp im Namen von Ray Newton ausgelöst, der ein externer Benutzer ist.

- Wenn die BillingApp einen API-Aufruf auslöst, muss sie zuerst ein JWT vom Guidewire Hub anfordern. Die Anforderung des JWT umfasst die Client-ID (
0oaqt9pl1vZK1kybt0h7), das Geheimnis (aSecret), die API-Rolle der Anwendung (scp.pc.acme_billingApp), die Ressourcenzugriffsstrategie der Anwendung (pc.service), die Tatsache, dass der Aufruf für einen Benutzer (pc.allowusercontext) erfolgt, und zusätzliche Bereitstellungsinformationen (tenant.acme,project.default,planet_class.prod). - Guidewire Hub authentifiziert die Services basierend auf der Client-ID und dem Geheimnis. Außerdem wird verifiziert, dass die API-Rolle und die Ressourcenzugriffsstrategie in der Anforderung mit den Angaben übereinstimmen, die bei der Registrierung des Services bei Guidewire Hub angegeben wurden.
- Guidewire Hub generiert ein JWT und sendet es an den Service. Dieses JWT enthält die Client-ID (
cid) und einenscp-Token-Claim, der die API-Rolle (scp.pc.acme_billingapp), die Ressourcenzugriffsstrategie (pc.service), den Wertpc.allowusercontext(der angibt, dass Benutzerinformationen in einem zusätzlichen Benutzerkontext-Header angegeben sind) und zusätzliche Bereitstellungsinformationen enthält. - Der Service sendet die API-Anforderung zusammen mit dem JWT und einem Benutzerkontext-Header, der den Benutzer (
rnewton@email.com), die Ressourcenzugriffsstrategie des Benutzers (pc_accountNumbers) und die Ressourcenzugriffs-ID (464778619) angibt, an PolicyCenter. - PolicyCenter muss den Endpunktzugriff sowohl auf der Serviceebene als auch auf der Benutzerebene bestimmen. Der Vorgang beginnt auf der Serviceebene. Ausgehend vom API-Rollenwert im JWT (
scp.pc.acme_billingapp) wird der Zugriff auf der Serviceebene mithilfe der API-Rollendateiacme_billingapp.role.yamldefiniert. - Als Nächstes bestimmt PolicyCenter den Endpunktzugriff auf der Benutzerebene. Ausgehend vom Inhalt des
groups-Token-Claims im Benutzerkontext-Header (gwa.prod.pc.Account_Holder) wird der Zugriff auf der Benutzerebene mithilfe der API-RollendateiAccount_Holder.role.yamldefiniert. - PolicyCenter muss auch den Ressourcenzugriff sowohl auf der Serviceebene als auch auf der Benutzerebene bestimmen. Der Vorgang beginnt mit der Ressourcenzugriffsstrategie auf der Serviceebene. Ausgehend von dem im JWT enthaltenen Wert der Ressourcenzugriffsstrategie (
pc.service) gewährt PolicyCenter den Ressourcenzugriff auf der Serviceebene laut Definition in der Dateiserviceaccess.yaml. (* PolicyCenter beginnt mit service_ext-1.0.access.yaml, aber diese Datei verweist auf zusätzlicheaccess.yaml-Dateien, deren Namen mit „service“ beginnen.) - Als Nächstes bestimmt PolicyCenter die Ressourcenzugriffsstrategie auf der Benutzerebene. Ausgehend vom Wert der Ressourcenzugriffsstrategie im Benutzerkontext-Header (
pc_accountNumbers) wird der Ressourcenzugriff auf Benutzerebene laut Definition in denaccountNumbersaccess.yaml-Dateien gewährt. (* PolicyCenter beginnt mitaccountNumbers_ext-1.0.access.yaml, aber diese Datei verweist auf zusätzlicheaccess.yaml-Dateien, deren Namen mit „accountNumbers“ beginnen.) - Um zu bestimmen, welcher Proxy-Benutzer der Sitzung zugewiesen werden soll, greift PolicyCenter auf das
RestAuthenticationSourceCreator-Plugin zu. Der Benutzerkontext-Header hat eine Ressourcenzugriffsstrategie mit dem Namenpc_accountNumbersfestgelegt. Das Plugin gibt somit den Proxy-Benutzer für externe Benutzer zurück:extuser. - PolicyCenter verarbeitet die Anforderung.
- Der Sitzungsbenutzer ist der externe Proxy-Benutzer:
extuser. - Der Endpunktzugriff ist die Schnittmenge der auf der Serviceebene (
acme_billingapp.role.yaml) und auf der Benutzerebene (Account_Holder.role.yaml) definierten Endpunkte und Operationen. Endpunkte, Operationen und Felder müssen auf beiden Ebenen enthalten sein, damit sie für den Aufruf verfügbar sind. - Der Ressourcenzugriff ist der Schnittpunkt zwischen den Ressourcen, auf die der Service zugreift (wie in
serviceaccess.yamldefiniert) und den Ressourcen, die dem Benutzer zur Verfügung stehen (wie in der DateiaccountNumbersaccess.yamlmit der Ressourcenzugriffs-ID von464778619definiert). In der Basiskonfiguration werden alle Ressourcen durch die Dateienserviceaccess.yamlzur Verfügung gestellt. Daher gibt der Ressourcenzugriff auf der Serviceebene logisch betrachtet keine Einschränkungen an. Der Aufruf kann auf jede Ressource zugreifen, sofern sie über den Ressourcenzugriff auf der Benutzerebene verfügbar ist.
- Der Sitzungsbenutzer ist der externe Proxy-Benutzer:
- PolicyCenter stellt die Antwort auf den ersten Aufruf bereit.