

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 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 Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

使用重構模式進行現代化的大型主機應用程式，例如 [AWS Mainframe Modernization Refactor with AWS Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/refactoring-m2.html)，需要謹慎地將身分驗證機制整合到新的應用程式架構。此整合通常會以後建化活動的形式處理。任務可能很複雜，通常涉及現有身分驗證系統的遷移或外部化，以符合現代安全標準和雲端原生實務。開發人員需要考慮如何在現代化應用程式執行期環境和程式庫的限制範圍內有效實作身分驗證。現代化之後， AWS 提供方法讓您更輕鬆地整合 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)。

此模式說明如何在身分驗證提供者為 Microsoft Entra ID 時，在現代化應用程式中實作身分驗證機制，而不必花時間進行研究和試驗。模式提供：
+ 來自 Microsoft Authentication Library (MSAL) 和其他 Microsoft Entra ID 文件且對身分驗證實作至關重要的欄位測試和相關角度程式庫。 
+ 使用 OAuth 2.0 在 AWS Blu Age Runtime 上啟用 Spring Security 所需的組態。
+ 擷取已驗證使用者身分並將其傳遞至 AWS Blu Age Runtime 的程式庫。
+ 我們建議實作的安全措施。
+ 針對 Microsoft Entra ID 設定中常見問題的疑難排解秘訣。

**注意**  
此模式使用 AWS Blu Age OAuth 延伸程式庫，該程式庫作為其[AWS 專業服務](https://aws.amazon.com/professional-services/)業務的一部分提供給客戶。此程式庫不屬於 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 Blu Age 團隊在您與 [AWS Professional Services](https://aws.amazon.com/professional-services/) 互動期間提供。
+ 部署和測試現代化應用程式的作用中 AWS 帳戶 。
+ 熟悉 AWS Blu Age 組態檔案和 Microsoft Entra ID 基本概念。

**限制**
+ 此模式涵蓋 OAuth 2.0 身分驗證和基本字符型授權流程。進階授權案例和精細存取控制機制不在範圍內。
+ 有些 AWS 服務 不適用於所有 AWS 區域。如需區域可用性，請參閱[AWS 服務 依區域](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。如需特定端點，請參閱[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)，然後選擇服務的連結。

**產品版本**

此模式的開發方式是使用：
+ AWS Blu Age Runtime 4.1.0 版 （此模式也適用於回溯相容的更新版本）
+ MSAL 程式庫 3.0.23 版
+ Java 開發套件 (JDK) 第 17 版
+ 角度版本 16.1

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

**來源技術堆疊**

在一般大型主機環境中，身分驗證是透過使用者設定檔實作。這些設定檔可識別系統的使用者、定義誰可以登入，並指定使用者可以在系統資源上執行哪些函數。使用者設定檔由安全主管或安全管理員管理。

**目標技術堆疊**
+ Microsoft Entra ID
+ 現代化 Java Spring 型後端
+ AWS Blu Age 執行時間
+ 使用 OAuth 2.0 的 Spring Security
+ 角度單頁應用程式 (SPA)

**目標架構**

AWS Blu Age 執行時間預設支援以 OAuth 2.0 為基礎的身分驗證，因此模式會使用該標準來保護後端 APIs。

下圖說明程序流程。

**注意**  
圖表包含 Amazon Aurora 做為資料庫現代化的範例，雖然此模式的步驟中不包含 Aurora。

![AWS Blu Age 應用程式的 Entra ID 型身分驗證程序流程。](http://docs.aws.amazon.com/zh_tw/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 攔截器會在 HTTPS 請求的 `Authorization`標頭中包含存取字符，以呼叫 AWS Blu Age 執行期。

1.  AWS Blu Age `extension-oauth`程式庫會使用 AWS Blu Age Runtime 組態檔案 (`application-main.yml`) 從 標頭擷取使用者資訊，並將此資訊放在 `SharedContext` 物件中，讓商業邏輯可以使用它。
**注意**  
`SharedContext` 是由 AWS Blu Age 提供的執行期元件，可管理現代化應用程式中的應用程式內容和狀態資訊。如需 AWS Blu Age Runtime 元件和更新的詳細資訊，請參閱 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 Runtime 組態](https://docs.aws.amazon.com/m2/latest/userguide/ba-runtime-config.html)。

1.  AWS Blu Age Runtime 會檢查字符是否存在。 

   1. 如果字符存在，它會透過與 Microsoft Entra ID 通訊來檢查字符的有效性。 

   1. 如果字符不存在， AWS 則 Blu Age Runtime 會傳回 HTTP 狀態碼為 403 的錯誤。

1. 如果字符有效， AWS 則藍時間執行時間允許業務邏輯繼續。如果字符無效， AWS 則 Blu Age Runtime 會傳回 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 受管執行期環境的遷移和現代化。您可以使用 Blu AWS Age 提供的此服務重構功能，來轉換和現代化舊版大型主機應用程式。

**注意**  
AWS Mainframe Modernization 服務 （受管執行期環境體驗） 不再開放給新客戶。對於類似 AWS Mainframe Modernization Service （受管執行期環境體驗） 的功能，請探索 AWS Mainframe Modernization Service （自我管理體驗）。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[AWS Mainframe Modernization 可用性變更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)。

**程式碼儲存庫**

CardDemo 應用程式已更新，以示範與 Microsoft Entra ID 的整合。您可以從 [GitHub 儲存庫存取此模式的](https://github.com/aws-samples/sample-microsoft-entra-id-based-auth-in-aws-bluage-modernized-mainframe-app)程式碼。

**後端組態**

此模式需要變更`application-main.yml`** **組態檔案，才能在後端應用程式上使用 OAuth 2.0 來啟用 Spring Security。 `.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 Blu Age 團隊在您與 [AWS Professional Services](https://aws.amazon.com/professional-services/) 互動期間提供。

此程式庫會讀取上一個程式碼區塊中顯示的 `application-main.yml` fie 中的`claim.claims`組態。此組態是清單。清單中的每個項目提供兩個值： `claimName`和 `claimMapValue`。 `claimName`代表前端傳送的 JSON Web Token (JWT) 中的金鑰名稱，而 `claimMapValue`是 中的金鑰名稱`SharedContext`。例如，如果您想要在後端擷取使用者 ID，請將 `claimName`設定為 JWT 中的金鑰名稱，該 JWT 會保留由 Microsoft Entra ID `userId`提供的 ，並將 `claimMapValue`設定為金鑰名稱，以在後端程式碼中擷取使用者 ID。

例如，如果您在 `UserId`中設定 `claimMapValue`，您可以使用下列程式碼來擷取使用者 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 Runtime 秘密](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 Runtime 組態 (`application-main.yml`) 中，請確定 JWT 驗證已使用來自 Entra ID 應用程式註冊的確切發行者 URI 和對象值正確設定。

  當字符過期並重新整理時：

  1. 角形應用程式的錯誤攔截器會透過 MSAL 取得新權杖來處理 401 回應。

  1. 新的字符會與後續請求一起傳送。

  1.  AWS Blu Age Runtime 的 OAuth 篩選條件會驗證新的權杖，並自動`SharedContext`更新目前的使用者資訊。這可確保商業邏輯繼續透過`SharedContext.get().getValue()`呼叫存取有效的使用者內容。

  如需 AWS Blu Age Runtime 元件及其更新的詳細資訊，請參閱 [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`物件人口，確認程式庫已成功從 JWTs擷取使用者資訊。
+ **特定宣告組態。**在 中`application-main.yml`，明確定義您需要從 Microsoft Entra ID 取得的宣告。例如，若要擷取使用者的電子郵件和角色，請指定：

  ```
  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 Runtime 和 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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Microsoft Azure 帳戶以建立 Entra ID。 | 如需選項和說明，請參閱 [Microsoft Azure 網站](https://azure.microsoft.com/en-us/free/)。 | 應用程式開發人員 | 
| 在應用程式中設定 Microsoft Entra ID。 | 若要了解如何將 Microsoft Entra ID B2C (Azure AD B2C) 身分驗證新增至您的角度 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/zh_tw/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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 複製 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> | 應用程式開發人員 | 
| 在 Tomcat 伺服器上部署 AWS Blu Age 現代化程式碼以實作身分驗證。 | 若要設定包含 Tomcat 和 Angular 開發伺服器的本機環境，請遵循 AWS Blu Age 團隊提供的安裝步驟，做為您與 AWS Professional Services 客戶互動的一部分。 | 應用程式開發人員 | 

### 建置身分驗證解決方案
<a name="build-the-authentication-solution"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 啟用 AWS Blu Age Runtime 安全性來保護 AWS Blu Age REST API 端點。 | 設定 AWS Blu Age Runtime 使用`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/zh_tw/prescriptive-guidance/latest/patterns/implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application.html) | 應用程式開發人員 | 
| 將來自您本機環境的範例程式碼併入您的 Blu Age 現代化角度程式碼基底。 | 如需有關如何將範例併入您的 AWS Blu Age 現代化角度程式碼庫的資訊，請參閱此模式稍早的[程式碼儲存庫](#implement-entra-id-authentication-in-aws-blu-age-modernized-mainframe-application-tools)一節。 | 應用程式開發人員 | 
| 將程式`oauth2-ext`庫放在共用目錄中。 | 將程式`oauth2-ext`庫放在應用程式伺服器的** **共用目錄中，以便您的** **AWS Blu Age 現代化應用程式可以使用它**。 **執行下列命令：<pre>cd oauth2-ext/target<br />cp extension-oauth-filter-<version>.jar /{app-server-home}/shared/</pre> | 應用程式開發人員 | 

### 部署身分驗證解決方案
<a name="deploy-the-authentication-solution"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 部署前端應用程式。 | 執行下列命令，在本機啟動前端應用程式：<pre>npm install <br />ng serve --ssl<br />npm start</pre>將 `--ssl` 旗標新增至 `ng serve`命令可確保開發伺服器使用 HTTPS，這比其他通訊協定更安全，並提供更好的生產環境模擬。 | 應用程式開發人員 | 
| 啟動後端應用程式。 | 在 Eclipse 中啟動 Tomcat 伺服器。 | 應用程式開發人員 | 

### 測試應用程式。
<a name="test-the-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 測試登入功能。 | 在 存取本機部署的應用程式，`http://localhost:4200`以確認要求使用者確認其身分。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/zh_tw/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 流程](https://authguidance.com/azure-ad-troubleshooting/)。 OAuth  | 
| 一般字符相關問題。 | 若要解碼和檢視 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 身分平台中的 OAuth 2.0 和 OpenID Connect (OIDC) 身分驗證流程，請參閱 [Microsoft Entra 文件](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols)。