

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Blu Age モダナイズされたメインフレームアプリケーションで Microsoft Entra ID ベースの認証を実装する
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application"></a>

*Vishal Jaswani と Rimpy Tewani、Amazon Web Services*

## 概要
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-summary"></a>

**注記**  
AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

Refactor with [AWS Mainframe ModernizationAWS Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html) などのリファクタリングパターンを使用してモダナイズされるメインフレームアプリケーションでは、認証メカニズムを新しいアプリケーションアーキテクチャに慎重に統合する必要があります。この統合は通常、モダナイズ後のアクティビティとして処理されます。タスクは複雑になる可能性があり、最新のセキュリティ基準やクラウドネイティブプラクティスに合わせて既存の認証システムを移行または外部化することがよくあります。開発者は、モダナイズされたアプリケーションのランタイム環境とライブラリの制約内で作業しながら、認証を効果的に実装する方法を検討する必要があります。モダナイゼーションの後、 は AWS Blu Age の最新のコードを [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) や [Microsoft Entra ID](https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id) (旧 Azure AD) などのアイデンティティおよびアクセス管理システムと簡単に統合する方法 AWS を提供します。

このパターンでは、認証プロバイダーが Microsoft Entra ID の場合に、調査やトライアルに時間を費やすことなく、モダナイズされたアプリケーションに認証メカニズムを実装する方法について説明します。このパターンで提供する内容は次のとおりです。
+ 認証実装に不可欠な Microsoft Authentication Library (MSAL) およびその他の Microsoft Entra ID ドキュメントのフィールドテスト済みの、関連する Angular ライブラリ。 
+ OAuth 2.0 を使用して Spring Security を有効にするために必要な AWS Blu Age ランタイムの設定。
+ 認証されたユーザーの ID をキャプチャし、 AWS Blu Age ランタイムに渡すライブラリ。
+ 実装することが推奨されるセキュリティ対策。
+ Microsoft Entra ID のセットアップでよく発生する問題のトラブルシューティングのヒント。

**注記**  
このパターンでは、[AWS プロフェッショナルサービス](https://aws.amazon.com/professional-services/)エンゲージメントの一環としてお客様に提供される AWS Blu Age OAuth 拡張機能ライブラリを使用します。このライブラリは AWS Blu Age ランタイムの一部ではありません。

## 前提条件と制限
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-prereqs"></a>

**前提条件**
+  AWS Blu Age メインフレームモダナイゼーションリファクタリングツールによって生成されたモダナイズされたアプリケーション。このパターンでは、[CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) をサンプルオープンソースメインフレームアプリケーションとして使用します。
+  AWS Blu Age OAuth 拡張機能ライブラリ。[AWS プロフェッショナルサービスと](https://aws.amazon.com/professional-services/)のエンゲージメント中に AWS Blu Age チームによって提供されます。
+ モダナイズされたアプリケーションをデプロイしてテスト AWS アカウント するアクティブな 。
+  AWS Blu Age 設定ファイルと Microsoft Entra ID の基礎に精通していること。

**制限事項**
+ このパターンでは、OAuth 2.0 認証と基本的なトークンベースの承認フローについて説明します。高度な承認シナリオときめ細かなアクセスコントロールメカニズムは対象範囲外です。
+ 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「[AWS のサービス (リージョン別)](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)」を参照してください。特定のエンドポイントについては、「[Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」で、サービスのリンクを選択してご確認ください。

**製品バージョン**

このパターンの開発には、以下を使用しています。
+ AWS Blu Age ランタイムバージョン 4.1.0 (このパターンは下位互換性があるそれ以降のバージョンでも機能します)
+ MSAL ライブラリ、バージョン 3.0.23
+ Java 開発キット (JDK) バージョン 17。
+ Angular バージョン 16.1

## アーキテクチャ
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-architecture"></a>

**ソーステクノロジースタック**

一般的なメインフレーム環境では、認証はユーザープロファイルを通じて実装されます。これらのプロファイルは、システムに対してユーザーを識別し、サインインできるユーザーを定義し、ユーザーがシステムリソースで実行できる関数を指定します。ユーザープロファイルは、セキュリティ担当者またはセキュリティ管理者によって管理されます。

**ターゲットテクノロジースタック**
+ Microsoft Entra ID
+ モダナイズされた Java Spring Boot ベースのバックエンド
+ AWS Blu Age ランタイム
+ OAuth 2.0 を使用した Spring Security
+ Angular 単一ページアプリケーション (SPA)

**ターゲットアーキテクチャ**

AWS Blu Age ランタイムはデフォルトで OAuth 2.0 ベースの認証をサポートしているため、パターンはその標準を使用してバックエンド APIsを保護します。

以下の図に、プロセスフローを示します。

**注記**  
この図には、データベースのモダナイズの例として Amazon Aurora が含まれていますが、Aurora はこのパターンのステップに含まれていません。

![AWS Blu Age アプリケーション用の Entra ID ベース認証のプロセスフロー。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/e51f24b8-178f-4974-aae9-23a0cc8540f5/images/0fdcdb22-9e46-4b02-86b2-395cba3e2f81.png)


各パラメータの意味は次のとおりです。

1. ユーザーが Microsoft Entra ID で認証を試みます。

1. Microsoft Entra ID が、アプリケーションが後続の呼び出しで使用する更新、アクセス、および ID トークンを返します。

1. MSAL インターセプターは、 AWS Blu Age ランタイムを呼び出す HTTPS リクエストの`Authorization`ヘッダーにアクセストークンを含めます。

1.  AWS Blu Age `extension-oauth`ライブラリは、 AWS Blu Age ランタイム設定ファイル (`application-main.yml`) を使用して ヘッダーからユーザー情報を抽出し、この情報を`SharedContext`オブジェクトに配置して、ビジネスロジックがそれを消費できるようにします。
**注記**  
`SharedContext` は Blu Age AWS が提供するランタイムコンポーネントで、モダナイズされたアプリケーション全体のアプリケーションコンテキストと状態情報を管理します。 AWS Blu Age ランタイムのコンポーネントと更新の詳細については、 AWS Mainframe Modernization ドキュメントの [AWS Blu Age リリースノート](https://docs.aws.amazon.com/m2/latest/userguide/ba-release-notes.html)を参照してください。`application-main.yml` ファイルの詳細については、 AWS Mainframe Modernization ドキュメントの[AWS 「Blu Age ランタイムの設定をセットアップする](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html)」を参照してください。

1.  AWS Blu Age ランタイムは、トークンが存在するかどうかを確認します。 

   1. トークンが存在する場合、Microsoft Entra ID と通信してトークンの有効性をチェックします。 

   1. トークンが存在しない場合、 AWS Blu Age ランタイムは HTTP ステータスコード 403 のエラーを返します。

1. トークンが有効な場合、 AWS Blue Age ランタイムはビジネスロジックの続行を許可します。トークンが無効の場合、 AWS Blu Age ランタイムは HTTP ステータスコード 403 のエラーを返します。

**OAuth 2.0 のワークフロー**

OAuth 2.0 のワークフローの概要図については、[Microsoft Entra のドキュメント](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow#protocol-details)を参照してください。

## ツール
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools"></a>

**AWS のサービス**

[AWS Mainframe Modernization](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) には、メインフレームから AWS マネージドランタイム環境への移行とモダナイゼーションの計画と実装に役立つツールとリソースが用意されています。 AWS Blu Age が提供するこのサービスのリファクタリング機能を使用して、レガシーメインフレームアプリケーションを変換およびモダナイズできます。

**注記**  
AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization サービス (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization サービス (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS Mainframe Modernization  可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

**コードリポジトリ**

Microsoft Entra ID との統合を実証するために、CardDemo アプリケーションが更新されました。コードには、[このパターン用の GitHub リポジトリ](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app)からアクセスできます。

**バックエンド設定**

このパターンでは、バックエンドアプリケーションで OAuth 2.0 を使用して Spring Security を有効にするために、`application-main.yml`** **設定ファイルを変更する必要があります。 `.yml` ファイルは次のようになります。

```
gapwalk-application.security: enabled
gapwalk-application:
  security: 
    identity: oauth
    issuerUri: ${issuerUrl}
    claim:
      claims:
        -
          claimName: upn
          claimMapValue: username
spring:
  autoconfigure:
    exclude:
     - org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration
     - org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration
  security:
    oauth2:
      client:
        registration: 
          azure:
            client-id: {clientId}
            client-secret: ${clientSecret}
            provider: azure
            authorization-grant-type: authorization_code
            redirect-uri: ${redirectUri}
            scope: openid
           
        provider:
          azure:
            authorization-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/authorize
            token-uri:  ${gapwalk-application.security.issuerUri}/oauth2/v2.0/token
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
```

**AWS Blu Age OAuth 拡張フィルターライブラリ**

 AWS Blu Age OAuth 拡張機能ライブラリは、[AWS プロフェッショナルサービスと](https://aws.amazon.com/professional-services/)のエンゲージメント中に AWS Blu Age チームによって提供されます。

このライブラリは、前のコードブロックに示されている `application-main.yml` ファイルの `claim.claims` 設定を読み取ります。この設定はリストです。リストの各項目では、`claimName` と `claimMapValue` の 2 つの値が得られます。`claimName` はフロントエンドによって送信される JSON ウェブトークン (JWT) のキー名を表し、`claimMapValue` は `SharedContext` のキーの名前です。例えば、バックエンドでユーザー ID をキャプチャする場合は、`claimName` を Microsoft Entra ID によって提供される `userId` を保持する JWT のキー名に設定し、`claimMapValue` を、バックエンドコードでユーザー ID を取得するためのキー名に設定します。

例えば、`claimMapValue` で `UserId` を設定した場合、次のコードを使用してユーザー ID を抽出することができます。

```
SharedContext.get().getValue("userId", [UserId]);
```

## ベストプラクティス
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-best-practices"></a>

このパターンの実装では、以下の重要なセキュリティ上の考慮事項を考慮してください。

**重要**  
このパターンでは、認証統合の基礎を説明します。本番環境にデプロイする前に、ビジネス要件に基づいて、このセクションで説明しているセキュリティ対策以外のセキュリティ対策も実装することをお勧めします。
+ **AWS 設定のセキュリティ。 **機密設定値`application-main.yml`を から に移動します AWS Secrets Manager。例えば、Secrets Manager を使用して次のプロパティを設定します。

  ```
  security:
      oauth2:
        client:
          registration: 
            azure:
              client-id: {clientId}
              client-secret: ${clientSecret}
  ```

  Secrets Manager を使用して AWS Blu Age パラメータを設定する方法の詳細については、 AWS Mainframe Modernization ドキュメントの[AWS 「Blu Age ランタイムシークレット](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config-app-secrets.html)」を参照してください。
+ **ランタイム環境の保護。**適切な AWS セキュリティコントロールを使用して、モダナイズされたアプリケーション環境を設定します。

  ```
  server: 
    tomcat: 
      remoteip: 
       protocol-header: X-Forwarded-Proto 
       remote-ip-header: X-Forwarded-For 
    forward-headers-strategy: NATIVE
  ```
+ **Amazon CloudWatch ログ。**ファイル `logback-spring.xml to src/main/resources` の追加を検討してください。

  ```
  <configuration> 
   <appender name="CLOUDWATCH" class="com.amazonaws.services.logs.logback.CloudWatchAppender">  
     <logGroup>/aws/bluage/application</logGroup> 
     <logStream>${AWS_REGION}-${ENVIRONMENT}</logStream> 
     <layout> 
      <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> 
     </layout> 
   </appender> 
  
   <root level="INFO"> 
   <appender-ref ref="CLOUDWATCH"/> 
   </root> 
  </configuration>
  ```

  CloudWatch でトレースを有効にする方法については、CloudWatch ドキュメントの「[ログ相関のトレースを有効にする](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html)」を参照してください。
+ **トークンの設定と処理。**セキュリティ要件に合わせて Microsoft Entra ID でトークンの有効期間を設定します。アクセストークンを 1 時間以内に期限切れになるよう設定し、24 時間以内に期限切れになるように更新します。 AWS Blu Age ランタイム設定 (`application-main.yml`) で、JWT 検証が Entra ID アプリケーション登録の正確な発行者 URI とオーディエンス値で正しく設定されていることを確認します。

  トークンの有効期限が切れて更新された場合:

  1. Angular アプリケーションのエラーインターセプターが、MSAL を介して新しいトークンを取得することにより 401 レスポンスを処理します。

  1. 新しいトークンが、後続のリクエストと一緒に送信されます。

  1.  AWS Blu Age ランタイムの OAuth フィルターは、新しいトークンを検証し、現在のユーザー情報`SharedContext`で自動的に更新します。これにより、ビジネスロジックは `SharedContext.get().getValue()` 呼び出しを通じて有効なユーザーコンテキストに引き続きアクセスできます。

   AWS Blu Age ランタイムコンポーネントとその更新の詳細については、[AWS 「Blu Age リリースノート](https://docs.aws.amazon.com/m2/latest/userguide/ba-release-notes.html)」を参照してください。
+ **AWS Blu Age ランタイムのセキュリティ。** AWS Blu Age が提供する`oauth2-ext`ライブラリは、適切なファイルアクセス許可を持つ正しい共有ディレクトリの場所 (`{app-server-home}/shared/`) に配置する必要があります。ログの `SharedContext` オブジェクト母集団をチェックして、ライブラリが JWT からユーザー情報を正常に抽出していることを確認します。
+ **特定のクレーム設定。**`application-main.yml` で、Microsoft Entra ID から必要なクレームを明示的に定義します。例えば、ユーザーの E メールとロールをキャプチャするには、以下を指定します。

  ```
  gapwalk-application:
    security:
      claim:
        claims:
          - claimName: upn
            claimMapValue: username
          - claimName: roles
            claimMapValue: userRoles
          - claimName: email
            claimMapValue: userEmail
  ```
+ **エラー処理。**Angular アプリケーションで認証失敗に対処するためのエラー処理を追加します。次に例を示します。

  ```
  @Injectable()
  export class AuthErrorInterceptor implements HttpInterceptor {
    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      return next.handle(request).pipe(
        catchError((error: HttpErrorResponse) => {
          if (error.status === 401) {
            // Handle token expiration
            this.authService.login();
          }
          if (error.status === 403) {
            // Handle unauthorized access
            this.router.navigate(['/unauthorized']);
          }
          return throwError(() => error);
        })
      );
    }
  }
  ```
+ **セッションタイムアウトの設定。** AWS Blu Age ランタイムと Microsoft Entra ID の両方でセッションタイムアウト設定を構成します。例えば、`application-main.yml` ファイルに次のコードを追加します。

  ```
  server:
    servlet:
      session:
        timeout: 3600 # 1 hour in seconds
  ```
+ **MsalGuard。**不正アクセスを防ぐために、保護するすべてのルートに MsalGuard 機能を実装する必要があります。例えば、次のようになります。

  ```
  const routes: Routes = [
      { path: '', redirectTo: '/transaction-runner', pathMatch: 'full' },
      { path: 'transaction-runner', component: TransactionRunnerComponent, canActivate:guards },
      { path: 'user-info', component: UserInfoComponent, canActivate:guards },
      { path: 'term/:transid/:commarea', component: TermComponent, canActivate:guards },
  	{ path: 'code', component: TransactionRunnerComponent  }
  ];
  ```

  MsalGuard 保護が適用されていないルートには認証なしでアクセスできるため、機密機能が公開される可能性があります。認証を必要とするすべてのルートの設定にガードが含まれていることを確認してください。

## エピック
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-epics"></a>

### Microsoft Entra ID をセットアップする
<a name="set-up-a-microsoft-entra-id"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Microsoft Azure アカウントをセットアップして Entra ID を作成する。 | オプションと手順については、[Microsoft Azure のウェブサイト](https://azure.microsoft.com/en-us/free/)を参照してください。 | アプリ開発者 | 
| アプリケーションで Microsoft Entra ID をセットアップする。 | Microsoft Entra ID B2C (Azure AD B2C) 認証を Angular SPA に追加する方法については、[Microsoft のドキュメント](https://learn.microsoft.com/en-us/azure/active-directory-b2c/enable-authentication-angular-spa-app#add-the-authentication-components)を参照してください。具体的には次のとおりです。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | アプリ開発者 | 

### リポジトリのクローンを作成し、 AWS Blu Age コードをデプロイする
<a name="clone-the-repository-and-deploy-your-aws-blu-age-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 認証に必要な Angular コードを取得するために、GitHub リポジトリのクローンを作成する。 | 次のコマンドを実行して、このパターンで提供している [GitHub リポジトリ](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app)をローカルの現在の作業ディレクトリにクローンします。<pre>git clone https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app.git</pre> | アプリ開発者 | 
| 認証を実装するために、 AWS Blu Age モダナイズされたコードを Tomcat サーバーにデプロイします。 | Tomcat と Angular 開発サーバーを含むローカル環境を設定するには、 AWS プロフェッショナルサービスとのカスタマーエンゲージメントの一環として AWS Blu Age チームが提供するインストール手順に従います。 | アプリ開発者 | 

### 認証ソリューションを構築する
<a name="build-the-authentication-solution"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS Blu Age REST API エンドポイントを保護するために、AWS Blu Age ランタイムセキュリティを有効にする。 |  AWS Blu Age ランタイムが使用する`application-main.yml`ファイルを次のように設定します。このファイルの例については、このパターンの前半の「[コードリポジトリ](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools)」セクションを参照してください。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | アプリ開発者 | 
| ローカル環境のサンプルコードを Blu Age によりモダナイズされた Angular コードベースに組み込む。 |  AWS Blu Age のモダナイズされた Angular コードベースに例を組み込む方法については、このパターンの前半の[コードリポジトリ](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools)セクションを参照してください。 | アプリ開発者 | 
| `oauth2-ext` ライブラリを共有ディレクトリに配置する。 | ****AWS Blu Age によりモダナイズされたアプリケーションで使用できるように、`oauth2-ext` ライブラリをアプリケーションサーバーの****共有ディレクトリに配置します**。**以下の コマンドを実行します。<pre>cd oauth2-ext/target<br />cp extension-oauth-filter-<version>.jar /{app-server-home}/shared/</pre> | アプリ開発者 | 

### 認証ソリューションをデプロイする
<a name="deploy-the-authentication-solution"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| フロントエンドアプリケーションをデプロイする。 | 以下のコマンドを実行して、フロントエンドアプリケーションをローカルで起動します。<pre>npm install <br />ng serve --ssl<br />npm start</pre>`ng serve` コマンドに `--ssl` フラグを付加すると、開発サーバーで HTTPS を使用するようにできます。HTTPS は他のプロトコルよりも安全であり、本番環境の優れたシミュレーションが行えます。 | アプリ開発者 | 
| バックエンドアプリケーションを起動する。 | Eclipse で Tomcat サーバーを起動します。 | アプリ開発者 | 

### アプリケーションをテストする
<a name="test-the-application"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ログイン機能をテストする。 | ローカルにデプロイされたアプリケーションに `http://localhost:4200` でアクセスし、ユーザーが自分の ID の確認を求められることを検証します。ここでは、デモのために HTTP を使用します。本番稼働環境やその他のパブリックにアクセス可能な環境では、セキュリティのために HTTPS を使用する必要があります。ローカル開発であっても、可能であれば HTTPS をセットアップすることをお勧めします。<br />Microsoft ログインプロンプトが表示され、Microsoft Entra ID で設定されたユーザーにアプリケーションへのアクセスが許可される必要があります。 | アプリ開発者 | 
| リクエストで送信した認可ヘッダーをテストする。 | 以下の手順では、例として [CardDemo](https://github.com/aws-samples/aws-mainframe-modernization-carddemo) アプリケーションを使用します。他の最新のアプリケーションのテスト手順は異なります。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | アプリ開発者 | 
| ログアウト機能をテストする。 | **[終了]** を選択してログアウトし、アプリケーションにもう一度アクセスしてみてください。新しいログインプロンプトが表示されるはずです。 | アプリデベロッパー | 

## トラブルシューティング
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Microsoft Entra ID によって発行されたトークンに、Spring Boot OAuth 2.0 セキュリティとの互換性がない。 | 問題の解決については、OAuth ブログの「[Microsoft Entra ID OAuth Flow](https://authguidance.com/azure-ad-troubleshooting/)」を参照してください。 | 
| トークン関連の一般的な質問。 | JWT トークンの内容をデコードして表示するには、[https://jwt.io/](https://jwt.io/) ウェブサイトを使用してください。 | 

## 関連リソース
<a name="implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-resources"></a>
+  AWS Blu Age を使用したアプリケーションのリファクタリングについては、 [AWS Mainframe Modernization ドキュメント](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html)を参照してください。
+ OAuth 2.0 の動作については、[OAuth 2.0 のウェブサイト](https://oauth.net/2/)を参照してください。
+ Microsoft Authentication Library (MSAL) の概要については、[Microsoft Entra のドキュメント](https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-overview)を参照してください。
+ AS/400 システムのユーザープロファイルの詳細については、[IBM i (AS400) チュートリアル](https://www.go4as400.com/subsystem-jobs-user-profile-in-as400/jobs.aspx?cid=14)を参照してください。
+ Microsoft ID プラットフォームの OAuth 2.0 および OpenID Connect (OIDC) 認証フローについては、[Microsoft Entra のドキュメント](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols)を参照してください。