教學課程:藍光時代應用程序安全AWSMainframe Modernization Service - AWSMainframe Modernization Services

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

教學課程:藍光時代應用程序安全AWSMainframe Modernization Service

本教學課程文件AWS透過 Amazon Cognito 進行大型主機現代化應用程式身分驗證。

Amazon Cognito 使用者集區

AWS大型主機現代化部署的藍光時代應用程式可設定為使用 Amazon Cognito 使用者集區做為身分識別提供者。然後,Amazon Cognito 將儲存使用者及其屬性,並處理他們的登入程序。提供密碼策略,多因素身份驗證和可自定義的電子郵件/電話號碼消息。藍光時代的應用程序安全性基於 SpringSecurity; 其 OAuth2 功能用於與 Amazon Cognito 進行交流。如需 Amazon Cognito 使用者集區的詳細資訊,請參閱Amazon Cognito user poolsAmazon Cognito 開發人員指南

第三方身分供應商

Amazon Cognito 可透過聯合身分供應商功能將身分驗證委派給現有的第三方身分供應商。這篇文章使用 Amazon Cognito 和外部身分識別供應商進行以角色為基礎的存取控制提供此類設定的範例。

設定範例

以下各節將記錄一個部署AWS大型主機現代化藍光時代應用程式將其身份驗證委派給 Amazon Cognito。

示範

這個演示應用程序歸檔將需要在以下步驟:PlanetsDemo-v1.zip

網域註冊

Amazon Cognito 要求整合 (「用戶端」) 應用程式必須透過 HTTPS 安全 URL 公開。為此,我們需要一個域名和 TLS 證書這個域。

53 號幹線和路線的組合AWS Certificate Manager為我們提供了這項任務的集成解決方案。

首先瀏覽 Route 53 主控台。在那裡,選擇已註冊的網域,然後選擇註冊域名

使用選擇網域名稱選擇一個可用的。在以下頁面中,輸入您的聯繫方式,然後選擇新增至購物車。對您的選擇進行最後審查,然後選擇完成訂單

您可能需要回答驗證電子郵件,然後等待網域註冊進行。

TLS 憑證排

在此步驟中,您要求先前註冊之網域的憑證。

  1. 當先前建立的網域名稱可用時,請瀏覽至中的 ACMAWS管理主控台。

  2. 選擇請求憑證,並在憑證類型,選擇請求公有憑證

    
       選取要求公用憑證的 [要求憑證] 頁面。
  3. 選擇 Next (下一步)。

  4. 開啟請求公有憑證,輸入您之前註冊的域名並離開DNS 驗證已選取。

    
       [要求公用憑證] 頁面,其中包含輸入的網域名稱並選取 DNS 驗證。

    然後你應該得到一個Successfully requested certificate訊息。

  5. 選擇檢視憑證,並注意其目前的狀態為待定作業。由於它與 Route 53 網域相關,因此您可以使用主控台建立必要的 DNS 驗證記錄。如需詳細資訊,請參閱《》驗證網域所有權AWS Certificate Manager使用者指南。為此,選擇在 Route 53 中建立記錄網域,然後選擇建立記錄

    
       在 Amazon Route 53 中建立 DNS 記錄頁面,其中包含已選取擱置憑證。

    您應該具備Successfully created DNS records訊息。等到證書進入問題狀態。

Amazon Cognito 安裝

為了測試目的,我們將創建一個用戶池管理本地用戶配置文件。

  1. 導航到 Amazon Cognito 在AWS管理主控台。選擇使用者集區,然後建立使用者集區

    
       Amazon Cognito 使用者集區頁面。
  2. 在 中設定登入體驗,保持Cognito 使用者集區預設供應商類型。您可以選擇一或多個Cognito 使用者集區登入選項; 現在,選擇使用者名稱,然後選擇下一頁

    
       已選取 Cognito 使用者集區和使用者名稱的 Cognito 授權提供者頁面。
  3. 在 中設定安全需求,請保留預設值,或視情況調整密碼和登入需求。選擇 Next (下一步)。

  4. 在 中設定註冊體驗,因為這是一個演示應用程序,請禁用啟用自我註冊作為安全措施並選擇下一頁

    
       已停用啟用自助註冊的 Cognito 自助註冊頁面。
  5. 在 中設定訊息交付,您可以使用透過 Amazon SES 傳送電子郵件如果您的帳戶中已經有 Amazon SES 身份。否則選擇使用 Cognito 傳送電子郵件用於測試目的。您可以添加一個有效的回覆電子郵件地址如果你喜歡。選擇 Next (下一步)。

    
       選取「使用 Cognito 傳送電子郵件」的「Cognito 電子郵件」頁面。
  6. 在 中整合您的應用程式,選擇使用者集區的名稱。在 中託管身份驗證頁面,選擇使用 Cognito 託管的 UI

    
       已選取「使用 Cognito 託管的使用者介面」的「Cognito 代管驗證頁面」區段。
  7. 為了簡單起見,在網域,選擇使用 Cognito 網域並輸入網域前置字元;例如,https://planetsdemo

    
       Cognito 網域頁面使用選取的 Cognito 網域,並為網域前置字元輸入的行星示範。
  8. 演示應用程序必須添加為客戶端。在 中應用程式用戶端,選擇Secletificate client (。輸入應用程式用戶端名稱,例如planetsdemo並選擇產生用戶端密碼

    
       Cognito 初始應用程式用戶端頁面已選取「機密用戶端」,並輸入應用程式用戶端名稱的 Plansdemo。產生用戶端密碼也會被選取。
  9. 在 中允許的回呼 URL使用具有以下規範格式的 URL:

    https://{m2-address}/{app-name}:{app-port}/login/oauth2/code/cognito

    其中:

    • m2-address是的 DNS 名稱AWS大型主機現代化進入點 (使用先前註冊之憑證中指定的網域)。

    • app-name是部署的應用程式名稱AWSMainframe Modernization Service*-web或者*-service通常)。

    • app-port是部署此應用程式的 (tomcat) 連接埠 (如下方應用程式定義中所指定)。

    您也可以使用臨時http://localhostURL,然後稍後編輯。

    將預設值保留在進階 App 用戶端設定屬性讀取和寫入權限區段,然後選擇下一頁

  10. 在 中Review and create (檢閱和建立),確認您的選擇,然後選擇建立使用者集區

Secret Manager

在上一個步驟中,需要秘密管理員來託管 Amazon Cognito 產生的用戶端密碼。為此目的使用AWS Secrets Manager。

  1. 導覽至「Secrets Manager」AWS管理主控台。

  2. 選擇 Store a new secret (存放新機密)。

  3. 在 中秘密類型,選擇其他類型的秘密,然後輸入client-secret的關鍵。對於該值,請複製並貼上 Amazon Cognito 產生的用戶端密碼。您可以在以下位置找到此值Cognito >使用者集區 >App Client >顯示用戶端密碼。選擇 Next (下一步)。

    
       Secrets Manager 會儲存一個新的密碼頁面,並在金鑰欄位中輸入其他選取的秘密和用戶端密碼。
  4. 在 中秘密名稱和描述,給秘密一個名字,然後選擇下一頁

  5. 在 中秘密輪換,離開自動輪換已停用。選擇 Next (下一步)。

  6. 在 中檢閱,查看您提供的信息,然後選擇存放

  7. Secrets (Secrets) 建立後,您必須啟用來源的存取權AWSMainframe Modernization Service 要做到這一點,選擇秘密,然後選擇編輯權限

    
       已選取編輯權限的 Secrets Manager 資源權限頁面。
  8. 在顯示的 JSON 編輯器中,貼上下列政策並選擇Save

    { "Version" : "2012-10-17", "Statement": [ { "Effect" : "Allow", "Principal" : { "Service" : "m2.amazonaws.com" }, "Action" : "secretsmanager:GetSecretValue", "Resource" : "*" } ] }

建立使用者

由於自我註冊已停用,因此請建立 Amazon Cognito 使用者。

  1. 導航到 Amazon Cognito 在AWS管理主控台。

  2. 選擇您建立的使用者集區,然後在使用者選擇建立使用者。

  3. 在 中使用者資訊,選擇傳送電子郵件邀請」中,輸入使用者名稱和電子郵件地址,然後選擇產生密碼。選擇 Create user (建立使用者)。

    
       Amazon Cognito 使用者資訊頁面,其中包含已選取的傳送電子郵件邀請。

示範

將示範應用程式上傳到 Amazon S3 儲存貯體;此處名為的儲存貯體名稱為planetsdemo將使用,帶有名稱的 key prefix(文件夾)v1和一個歸檔名稱planetsdemo-v1.zip

應用程式資源建立

此示範應用程式不需要額外的 AWS 資源。

應用程式定義調整

以下是AWS示範應用程式的大型主機現代化應用程式定義:

{ "resources": [ { "resource-type": "listener", "resource-id": "tomcat", "properties": { "port": 8196, "type": "http" } }, { "resource-type": "ba-application", "resource-id": "planetsdemo", "properties": { "app-location": "${s3-source}/PlanetsDemo-v1.zip" } }, { "resource-type": "cognito-external", "resource-id": "cognito-client", "properties": { "issuer-uri": "https://cognito-idp.{REGION_ID}.amazonaws.com/{POOL_ID}", "domain-name": "{DOMAIN_NAME}", "client-id": "{CLIENT_ID}", "secret-manager-arn": "{SECRET_MANAGER_ARN}" } } ], "source-locations": [ { "source-id": "s3-source", "source-type": "s3", "properties": { "s3-bucket": "planetsdemo", "s3-key-prefix": "v1" } } ] }

如上所述取代下列預留位置;您可以在應用程式整合您先前建立的 Amazon Cognito 使用者集區標籤:

  • {REGION_ID}:要部署應用程式的區域。

  • {POOL_ID}:Amazon Cognito 池 ID。

  • {DOMAIN_NAME}:在「整合您的應用程式」步驟期間建立的 Amazon Cognito 網域的完整 URL。

  • {CLIENT_ID}:該用戶端 IDAmazon Cognito 為您的應用程序創造的價值。

  • {SECRET_MANAGER_ARN}:秘密中先前在 Secrets Manager 中建立的秘密 ARN。

調整ba-applications3-source根據需要指向上傳應用程式的 Amazon S3 儲存貯體中的項目。

AWSMainframe Modernization Service

建立AWS請遵循下列步驟,大型主機現代化執行階段環境:

  1. 導覽至AWSMainframe Modernization ServiceAWS管理主控台。

  2. 選擇環境,選擇建立環境

  3. 在 中指定基本資訊,輸入名稱和説明,然後選擇AWS 藍色時間引擎。

  4. 在 中指定組態

    • 選擇獨立執行時間環境

    • 選擇允許部署到此環境的應用程式可公開存取

    • 選擇兩個子網路。

  5. 在 中附加儲存裝置-選用,請保留預設值。

  6. 在 中Review and create (檢閱和建立),檢閱資訊,然後選擇建立環境

AWSMainframe Modernization Service

  1. 導覽至AWSMainframe Modernization ServiceAWS管理主控台。

  2. 選擇應用程式,然後選擇建立應用程式

  3. 在 中指定基本資訊,輸入名稱和説明,然後選擇AWS 藍色時間引擎。

  4. 在 中指定資源和配置中,複製並貼上先前更新的應用程式定義 JSON。

  5. 在 中Review and create (檢閱和建立),檢閱資訊,然後選擇建立應用程式

AWSMainframe Modernization Service

兩者之後AWS大型主機現代化環境和應用程式已成功建立,而且兩者都在可用性狀態:

  1. 導覽至AWSMainframe Modernization ServiceAWS管理主控台。

  2. 選擇環境,然後選擇先前建立的環境。

  3. 選擇部署應用程式

  4. 選擇先前創建的應用程序。

  5. 選擇 Deploy (部署)。

AWSMainframe Modernization Service

  1. 導覽至AWSMainframe Modernization ServiceAWS管理主控台。

  2. 選擇 Applications (應用程式)

  3. 選擇您的應用程式,然後捲動至部署:應該是備妥狀態。

  4. 選擇動作,然後選擇開始申請

存取應用程式

  1. 等待應用程序在running狀態。

  2. 複製應用程式 DNS 主機名稱。

  3. 在瀏覽器中,導覽至https://{hostname}:{portname}/PlanetsDemo-web-1.0.0/

清除資源

如果您不再需要為此教學課程建立的資源,請刪除這些資源,以免繼續支付這些資源的費用。完成下列步驟: