第4章 セキュリティーの管理
4.1. OpenAPI サービスの認証 リンクのコピーリンクがクリップボードにコピーされました!
				OpenAPI サービス操作を保護するには、OpenAPI 仕様を使用して セキュリティースキーム を定義します。これらのスキームは、OpenAPI 仕様ファイルの securitySchemes セクションにあります。その Security Scheme を参照する Security Requirement を追加して操作を設定する必要があります。ワークフローがこのような操作を呼び出すと、その情報を使用して必要な認証設定が決定されます。
			
このセクションでは、サポートされている認証タイプの概要を示し、ワークフロー内の保護された OpenAPI サービス操作にアクセスするためにそれらを設定する方法を示します。
4.1.1. OpenAPI サービス認証の概要 リンクのコピーリンクがクリップボードにコピーされました!
					OpenShift Serverless Logic では、OpenAPI 仕様ファイルで定義された Security Schemes を使用して、OpenAPI サービス操作を保護できます。これらのスキームは、ワークフロー内で呼び出される操作の認証要件を定義するのに役立ちます。
				
					Security Schemes は、OpenAPI ドキュメントの securitySchemes セクションで宣言されています。各スキームは、HTTP Basic、API キーなど、適用する認証の種類を指定します。
				
ワークフローは、保護された操作を呼び出すときに、これらの定義済みスキームを参照して、必要な認証設定を決定します。
セキュリティースキームの定義例
					OpenAPI ファイルで Security Schemes が定義されているが、操作の Security Requirements が含まれていない場合、デフォルトでセキュリティー要件を作成するようにジェネレーターを設定できます。これらのデフォルトは、明示的に定義された要件のない操作に適用されます。
				
					そのスキームを設定するには、quarkus.openapi-generator.codegen.default-security-scheme プロパティーを使用する必要があります。default-security-scheme プロパティーは実行時ではなく、コード生成時にのみ使用されます。値は、http-basic-example または api-key-example など、securitySchemes セクションで使用可能なスキームのいずれかと一致する必要があります。
				
以下に例を示します。
quarkus.openapi-generator.codegen.default-security-scheme=http-basic-example
$ quarkus.openapi-generator.codegen.default-security-scheme=http-basic-example
4.1.2. OpenAPI サービスの認証情報の設定 リンクのコピーリンクがクリップボードにコピーされました!
認証スキームによって保護された OpenAPI サービス操作を呼び出すには、アプリケーションで対応する認証情報とパラメーターを設定する必要があります。OpenShift Serverless Logic はこれらの設定を使用して、ワークフローの実行中に外部サービスに対して認証を行います。
					このセクションでは、OpenAPI 仕様ファイルで宣言されたセキュリティースキームに必要な設定プロパティーを定義および適用する方法を説明します。これらの認証情報を提供するには、application.properties、ワークフローに関連付けられた ConfigMap、または SonataFlow CR の環境変数のいずれかを使用できます。
				
OpenAPI 仕様ファイルで定義されたセキュリティースキームは、同じファイルで使用可能なすべての操作に対してグローバルです。つまり、特定のセキュリティースキームに対して設定された設定は、他の保護された操作にも適用されます。
前提条件
- OpenShift Container Platform でアプリケーションやその他のワークロードを作成するための適切なロールと権限を持つ OpenShift Serverless Logic プロジェクトにアクセスできる。
 - OpenAPI 仕様に 1 つ以上のセキュリティースキームが含まれている。
 - OpenAPI 仕様ファイルにアクセスできる。
 - 
							
http-basic-exampleまたはapi-key-exampleを設定するスキームを特定している。 - 
							
application.propertiesファイル、ワークフローConfigMap、またはSonataFlowCR にアクセスできる。 
手順
プロパティーキーを作成するには、次の形式を使用します。
quarkus.openapi-generator.[filename].auth.[security_scheme_name].[auth_property_name]
quarkus.openapi-generator.[filename].auth.[security_scheme_name].[auth_property_name]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 
									
filenameは、security_example_json など、OpenAPI 仕様を含むファイルのサニタイズされた名前です。この名前をサニタイズするには、アルファベット以外の文字をすべて_アンダースコアに置き換える必要があります。 - 
									
security_scheme_nameは、OpenAPI 仕様ファイル内のセキュリティースキームオブジェクト定義のサニタイズされた名前です (例:http_basic_exampleまたはapi_key_example)。この名前をサニタイズするには、アルファベット以外の文字をすべて_アンダースコアに置き換える必要があります。 auth_property_nameは、ユーザー名など、設定するプロパティーの名前です。このプロパティーは、定義されたセキュリティースキームタイプによって異なります。注記環境変数を使用してプロパティーを設定する場合は、MicroProfile 環境変数のマッピングルールに従ってください。プロパティーキー内のアルファベット以外の文字をすべてアンダースコア
_に置き換えて、キー全体を大文字に変換できます。
- 
									
 
					次の例は、application.properties、ワークフローに関連付けられた ConfigMap、または SonataFlow CR で定義された環境変数を使用して、これらの設定プロパティーを提供する方法を示しています。
				
application.properties ファイルを使用して認証情報を設定する例
quarkus.openapi-generator.security_example_json.auth.http_basic_example.username=myuser quarkus.openapi-generator.security_example_json.auth.http_basic_example.password=mypassword
quarkus.openapi-generator.security_example_json.auth.http_basic_example.username=myuser
quarkus.openapi-generator.security_example_json.auth.http_basic_example.password=mypassword
ワークフロー ConfigMap を使用して認証情報を設定する例
						ワークフローの名前が example-workflow の場合、ユーザー定義プロパティーを持つ ConfigMap の名前は example-workflow-props にする必要があります。
					
SonataFlow CR で環境変数を使用して認証情報を設定する例
4.1.3. HTTP Basic 認証の例 リンクのコピーリンクがクリップボードにコピーされました!
					次の例は、HTTP Basic 認証スキームを使用してワークフロー操作を保護する方法を示しています。security-example.json ファイルは、http-basic-example セキュリティースキームを使用する単一の操作 sayHelloBasic を持つ OpenAPI サービスを定義します。アプリケーションプロパティー、ワークフロー ConfigMap、または環境変数を使用して認証情報を設定できます。
				
HTTP Basic 認証を使用した OpenAPI 仕様の例
					この例では、securitySchemes セクションで定義された http-basic-example スキームを使用して、sayHelloBasic 操作が保護されます。ワークフローでこの操作を呼び出す場合は、適切な認証情報を設定する必要があります。
				
4.1.3.1. HTTP Basic 認証でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
						次の設定キーを使用して、http-basic-example スキームの認証情報を提供できます。
					
| 説明 | プロパティーキー | 例 | 
|---|---|---|
|   ユーザー名の認証情報  |   
										  |   
										  | 
|   パスワードの認証情報  |   
										  |   
										  | 
						[filename] はサニタイズされた OpenAPI ファイル名 security_example_json に置き換え、[security_scheme_name] はサニタイズされたスキーム名 http_basic_example に置き換えることができます。
					
4.1.4. ベアラートークン認証の例 リンクのコピーリンクがクリップボードにコピーされました!
					次の例は、HTTP ベアラー認証スキームを使用して OpenAPI 操作を保護する方法を示しています。security-example.json ファイルは、認証に http-bearer-example スキームを使用する sayHelloBearer 操作を含む OpenAPI サービスを定義します。ワークフローの実行中に保護された操作にアクセスするには、アプリケーションプロパティー、ワークフロー ConfigMap、または環境変数を使用してベアラートークンを設定する必要があります。
				
ベアラートークン認証を使用した OpenAPI 仕様の例
					この例では、sayHelloBearer 操作は http-bearer-example スキームによって保護されています。この操作を正常に呼び出すには、設定で有効なベアラートークンを定義する必要があります。
				
4.1.4.1. ベアラートークン認証でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
ベアラートークンを提供するには、次の設定プロパティーキーを使用できます。
| 説明 | プロパティーキー | 例 | 
|---|---|---|
|   ベアラートークン  |   
										  |   
										  | 
						[filename] はサニタイズされた OpenAPI ファイル名 security_example_json に置き換え、[security_scheme_name] はサニタイズされたスキーム名 http_bearer_example に置き換えることができます。
					
4.1.5. API キー認証の例 リンクのコピーリンクがクリップボードにコピーされました!
					次の例は、apiKey 認証スキームを使用して OpenAPI サービス操作を保護する方法を示しています。security-example.json ファイルは、api-key-example セキュリティースキームを使用する sayHelloApiKey 操作を定義します。アプリケーションプロパティー、ワークフロー ConfigMap、または環境変数を使用して API キーを設定できます。
				
API キー認証を使用した OpenAPI 仕様の例
					この例では、sayHelloApiKey 操作は、HTTP リクエストヘッダーで渡される API キーを使用する api-key-example セキュリティースキームによって保護されています。
				
4.1.5.1. API キー認証でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
次の設定プロパティーを使用して API キーを設定できます。
| 説明 | プロパティーキー | 例 | 
|---|---|---|
|   API キー  |   
										  |   
										  | 
						[filename] はサニタイズされた OpenAPI ファイル名 security_example_json に置き換え、[security_scheme_name] はサニタイズされたスキーム名 api_key_example に置き換えることができます。
					
						apiKey スキームタイプには、Open API サービスが呼び出されたときに使用するキー名を設定する追加の name プロパティーが含まれています。また、キーを渡す形式は、in プロパティーの値によって異なります。
					
- 
								値が 
headerの場合、キーは HTTP リクエストパラメーターとして渡されます。 - 
								値が 
cookieの場合、キーは HTTP Cookie として渡されます。 - 
								値が 
queryの場合、キーは HTTP クエリーパラメーターとして渡されます。 
						この例では、キーは api-key-name: MY_KEY として HTTP ヘッダーに渡されます。
					
OpenShift Serverless Logic はこれを内部的に管理するため、プロパティー値を設定する以外に追加の設定は必要ありません。
4.1.6. clientCredentials OAuth 2.0 認証の例 リンクのコピーリンクがクリップボードにコピーされました!
					次の例は、OAuth 2.0 clientCredentials フローを使用して OpenAPI 操作を保護する方法を示しています。OpenAPI 仕様では、oauth-example セキュリティースキームを使用する sayHelloOauth2 操作が定義されています。HTTP Basic や API キーなどのより単純な認証方法とは異なり、OAuth 2.0 認証では、Quarkus OpenID Connect (OIDC) クライアントとの追加統合が必要です。
				
OAuth 2.0 を使用した OpenAPI 仕様の例
					この例では、sayHelloOauth2 操作は、トークンベースの認証に clientCredentials フローを使用する oauth-example セキュリティースキームによって保護されています。
				
4.1.6.1. OIDC Client Filter エクステンションによる OAuth 2.0 サポート リンクのコピーリンクがクリップボードにコピーされました!
						OAuth 2.0 トークン管理は、Quarkus OidcClient によって処理されます。この統合を有効にするには、次の例に示すように、Quarkus OIDC Client Filter と Quarkus OpenApi Generator OIDC エクステンションをプロジェクトに追加する必要があります。
					
Maven を使用してエクステンションを追加する例
gitops プロファイルを使用してエクステンションを追加する例
ワークフローイメージをビルドするときに、QUARKUS_EXTENSIONS ビルド引数を次の値で設定するようにしてください。
--build-arg=QUARKUS_EXTENSIONS=io.quarkus:quarkus-oidc-client-filter:3.15.4.redhat-00001,io.quarkiverse.openapi.generator:quarkus-openapi-generator-oidc:2.9.0-lts
$ --build-arg=QUARKUS_EXTENSIONS=io.quarkus:quarkus-oidc-client-filter:3.15.4.redhat-00001,io.quarkiverse.openapi.generator:quarkus-openapi-generator-oidc:2.9.0-lts
preview プロファイルを使用してエクステンションを追加する例
							SonataFlowPlatform CR に追加されたエクステンションは、preview プロファイルを使用してその namespace にデプロイするすべてのワークフローに含まれます。
						
4.1.6.2. OidcClient 設定 リンクのコピーリンクがクリップボードにコピーされました!
						保護された操作にアクセスするには、application.properties ファイルで OidcClient 設定を定義します。設定では、OpenAPI 仕様のサニタイズされたセキュリティースキーム名 (この場合は oauth_example) を次のように使用します。
					
この設定では、次のようになります。
- 
								
oauth_exampleは、OpenAPI ファイル内のoauth-exampleスキームのサニタイズされた名前と一致します。サニタイズされたスキーム名と対応するOidcClient間のリンクは、この単純な命名規則を使用することで実現されます。 - OidcClient は、ワークフロー実行中にトークンの生成と更新を自動的に処理します。
 
4.1.7. 認可トークンの伝播の例 リンクのコピーリンクがクリップボードにコピーされました!
					OpenShift Serverless Logic は、oauth2 または http ベアラーセキュリティースキームタイプを使用する OpenAPI 操作のトークン伝播をサポートします。トークンの伝播により、ワークフローはワークフロー作成中に受信した認可トークンをダウンストリームのサービスに転送できるようになります。この機能は、ワークフローがリクエストを開始したクライアントに代わってサードパーティーのサービスと対話する必要がある場合に役立ちます。
				
各セキュリティースキームごとにトークンの伝播を個別に設定する必要があります。有効にすると、明示的にオーバーライドされない限り、同じスキームを使用して保護されたすべての OpenAPI 操作で伝播されたトークンが使用されます。
					次の例では、security-example.json ファイルで sayHelloOauth2 操作を定義します。この操作では、clientCredentials フローで oauth-example セキュリティースキームを使用します。
				
トークン伝播を含む OpenAPI 仕様の例
4.1.7.1. 認可トークンの伝播でサポートされている設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
次の設定キーを使用して、トークンの伝播を有効にし、カスタマイズできます。
ワークフローがアクティブな間、トークンはダウンストリームのサービスに自動的に渡されます。ワークフローがタイマーやイベントベースの一時停止などの待機状態になると、トークンの伝播は停止します。ワークフローが再開された後、トークンは自動的に再伝播されません。必要に応じて再認証を管理する必要があります。
| プロパティーキー | 例 | 説明 | 
|---|---|---|
|   
										  |   
										  |   
										指定されたスキームで保護されたすべての操作のトークン伝播を有効にします。デフォルトは   | 
|   
										  |   
										  |   (オプション) トークンを読み取るためのカスタムヘッダー名でデフォルトの認証ヘッダーをオーバーライドします。  | 
						[filename] はサニタイズされた OpenAPI ファイル名 security_example_json に置き換え、[security_scheme_name] はサニタイズされたスキーム名 oauth_example に置き換えることができます。