2.8 認証および認可について

認証によって、認可された個人のみがマイクロサービス対応トランザクション・マネージャ(MicroTx)コーディネータ、マイクロサービス、トランザクションおよびデータにアクセスできるようになります。認可によって、システム権限およびデータへのアクセス制御が提供されます。これは認証に基づいて、個人が適切なアクセス権を取得することを保証します。

2.8.1 アクセス・トークンとリフレッシュ・トークンについて

アクセス・トークンとリフレッシュ・トークンを使用して、認証済ユーザーのみがサービスにアクセスできるようにし、管理ユーザーまたはトランザクションを最初に開始したユーザーのみがトランザクションを管理できるようにします。

アクセス・トークンおよびリフレッシュ・トークンを作成するにはアイデンティティ・プロバイダを使用します。新しいREST APIリクエスト(旅行を予約するリクエストなど)を送信するときに、リクエスト・ヘッダーでアクセス・トークンとリフレッシュ・トークンも渡す必要があります。

アクセス・トークン

認証を有効にする際には、すべてのリクエストのauthorizationヘッダーでアクセス・トークンを渡す必要があります。MicroTxは、JWTベースの認証を強制し、すべての受信リクエストのアクセス・トークンを公開キーに対して検証します。また、MicroTxライブラリからトランザクション・コーディネータに送信されたすべてのコールも検証されます。MicroTxは、アクセス・トークンを渡すユーザーに、操作を実行するために必要なシステム権限があることを確認します。これにより、認可されたユーザーのみがMicroTx APIにアクセスできるようになります。

コーディネータで認可チェックを有効にしたときでも、リクエストの送信時にアクセス・トークンを指定しない場合は、アクセス・トークンがないためトランザクションは拒否されます。

リフレッシュ・トークン

リフレッシュ・トークンを使用して、期限切れのアクセス・トークンをリフレッシュします。非同期のコールまたはトランザクションは、数分または数時間にわたる可能性があります。たとえば、LRAトランザクション・プロトコルを使用して、ホテルと航空券を予約するとします。ユーザーが予約を完了するまでに数分かかる場合があります。しかしながら、ユーザーがトランザクションを完了する前に、アクセス・トークンが期限切れになる可能性があります。YAMLファイルでアイデンティティ・プロバイダのURLおよびクライアントIDを指定すると、MicroTxはリフレッシュ・トークンをアイデンティティ・プロバイダに提供し、新しいアクセス・トークンを取得します。

2.8.2 Oracle_Tmm_Tx_Tokenトランザクション・トークンについて

トランザクション・トークンの作成と伝播を有効にして、認可済ユーザーのみがサービスにアクセスできるようにします。YAMLファイルでtransactionTokenEnabledtrueに設定すると、MicroTxは、署名付きトランザクション・トークンであるOracle_Tmm_Tx_Tokenという新しいトークンを作成します。

次のステップで、MicroTxOracle_Tmm_Tx_Tokenトランザクション・トークンを作成し、参加側サービスとMicroTxの間の後続の通信でそのトークンを伝播する方法を説明します。

  1. ユーザーがトランザクションを開始すると、トランザクション・イニシエータ・サービスがMicroTxにリクエストを送信します。
  2. MicroTxはトランザクション・イニシエータに応答し、レスポンス・ヘッダーでOracle_Tmm_Tx_Tokenを返します。

    MicroTxライブラリは、指定した公開キーと秘密キーのペアに基づいてこのトークンを作成します。ユーザーがOracle_Tmm_Tx_Tokenトランザクションを作成したり、リクエスト・ヘッダーで渡したりする必要はありません。

    MicroTxは、複数のヘッダーおよびトークンを使用して動作します。わかりやすくするために、この項ではOracle_Tmm_Tx_Tokenトランザクション・トークンについてのみ説明します。

  3. 参加側サービスからトランザクション・コーディネータへの後続のすべてのコールに対して、MicroTxライブラリはリクエスト・ヘッダーでOracle_Tmm_Tx_Tokenを渡します。

Kubernetesクラスタでのトランザクション・トークンの伝播を有効にするには、「トランザクション・トークンのプロパティ」を参照してください。

Docker Swarmでのトランザクション・トークンの伝播を有効にするには、「トランザクション・トークンのプロパティ」を参照してください。

2.8.3 トークンの暗号化および格納について

非同期コールをサポートするために、MicroTxはアクセス・トークンとリフレッシュ・トークンを格納してから、非同期コールで使用します。

トークンを暗号化するには、暗号化キーを作成します。MicroTxはトークンを暗号化して格納します。MicroTxから参加側サービスへの非同期コールがある場合、MicroTxは暗号化されたトークンをフェッチし、それを復号化してから、トークンをリクエスト・ヘッダーに添付します。

MicroTxは、アクセス・トークンおよびリフレッシュ・トークンを暗号化し、後で参加側サービスへのコール時に使用します。MicroTxは、トランザクションごとに初期化ベクトルの新しい値を生成します。各トランザクション・レコードには、キー・バージョンや初期化ベクトル値などの暗号化されたメタデータ情報が含まれます。