外部ユーザーのフローの例
下図は、外部ユーザーの認証情報と権限情報のフローを示しています。色は以下のように使用されます。
- オレンジ:認証情報
- 青:エンドポイントのアクセス権情報
- 緑:リソースのアクセス権情報
- 赤:プロキシユーザーとセッションユーザーの情報
いくつかの値を使用して、複数の種類のアクセスを決定します。これらの値は最初(1 つの種類のアクセスに適用されていない場合)は黒で表示されてから、1 つ以上の特定の色(特定の種類のアクセスに対してプロセスのその時点で使用されていることを値が反映する)で表示されます。
以下の例では、API 呼び出しをトリガしているのは Ray Newton さんであり、ブラウザベースのアプリケーションを使用している外部ユーザーです。

- Ray Newton さんが API 呼び出しをトリガすると、呼び出し元アプリケーションは最初に Guidewire Hub に JWT を要求します。JWT を入手するプロセスを開始するために、呼び出し元アプリケーションはそのクライアント ID(
00ubx7m33sHP1tsew7b4)、IdP の ID(acmeIdP_ID)、そのアプリケーションのリソースアクセス戦略(cc.username)、および追加のデプロイ情報(tenant.acme、project.default、planet_class.prod)を送信します。 - ユーザーを認証するために、Guidewire Hub は、ユーザー名(
rnewton@email.com)とパスワード(aPassword)を、何らかの種類のログイン画面で取得します。そして、この情報を適切な IdP に送信します。IDP は、ユーザーを認証し、そのユーザー名(rnewton@email.com)、ユーザーのグループ(gwa.prod.cc.Insured)、およびユーザーのリソースアクセス ID を含む SAML 応答を提供します。Ray Newton さんの場合、保険証券番号のリスト(PA-123456)です。 - Guidewire Hub が、コードを呼び出し元アプリケーションに送信します。呼び出し元アプリケーションは、このコードを使用して JWT を要求します。
- Guidewire Hub が JWT を生成して呼び出し元アプリケーションに送信します。この JWT には、クライアント ID(
cid)、リソースアクセス戦略(cc_policyNumbers)と追加のデプロイ情報を指定するscpトークンクレーム、ユーザーのグループ(gwa.prod.cc.Insured)を指定するgroupsトークン、およびユーザーのリソースアクセス ID(PA-123456)を指定するcc_policyNumbersトークンが含まれています。 - 呼び出し元アプリケーションは、JWT とともに API 要求を ClaimCenter に送信します。
- ClaimCenter によって、エンドポイントのアクセス権が決定されます。JWT にリストされたグループ(
gwa.prod.cc.Insured)に基づいて、Insured.role.yamlの API 役割ファイルが使用され、エンドポイントのアクセス権が定義されます。 - 次に、ClaimCenter によって、リソースアクセス戦略が決定されます。JWT(
cc_policyNumbers)内のリソースアクセス戦略値に基づいて、policyNumbersaccess.yamlファイルでの定義に従って、リソースアクセス権が付与されます。(* ClaimCenter はpolicyNumbers_ext-1.0.access.yamlから始まりますが、このファイルは別のaccess.yamlファイルを参照します。それらの名前はpolicyNumbersで始まります)。 - セッションに割り当てるプロキシユーザーを決定するために、ClaimCenter は
RestAuthenticationSourceCreatorプラグインを呼び出します。JWT ではcc_policyNumbersのリソースアクセス戦略が指定されています。それにより、プラグインは、外部ユーザー用プロキシユーザーのextuserを返します。 - ClaimCenter によって要求が処理されます。
- セッションユーザーは、プロキシ外部ユーザーの
extuserです。 - エンドポイントアクセス権は、
Insured.role.yamlによって定義されます。 - リソースのアクセス権は、
PA-123456のリソースアクセス ID を使用してpolicyNumbersaccess.yamlによって定義されます。
- セッションユーザーは、プロキシ外部ユーザーの
- ClaimCenter によって、最初の呼び出しに対する応答が渡されます。