Security Policy Enforcement Point (PEP) 範例示範在訊息流程中如何使用「安全原則執行點 (PEP)」作為「原則執行點」。
在此範例中,「安全原則執行點 (PEP)」會使用訊息中攜帶的身分資訊來強制執行安全作業。例如,透過使用 WS-Trust 1.3 版安全提供者(如 TFIM 6.2版)進行鑑別、授權及對映。因為安全實作基於外部集中式安全提供者(如 TFIM 6.2 版),所以此範例會提供可模擬部分基本安全作業的其他訊息流程。
此外還提供詳細說明針對此範例如何將 TFIM 6.2 版設為集中式外部安全提供者的指示(請參閱延伸安全原則執行點 (PEP) 範例。
此範例示範如何執行下列作業:
此範例示範下列實務:
如需與訊息流程安全相關之概念的詳細資訊,請參閱 IBM Integration Bus 文件中的訊息流程安全概觀。
下圖顯示主要的 Security Policy Enforcement Point (PEP) 範例訊息流程,即 SecurityPEPNodeSampleApplicationProject「整合」專案中的 SecurityPEPNodeSampleFlow.msgflow。此流程由 HTTPInput 節點及可呼叫安全作業的兩個 SecurityPEP 節點所組成。HTTPRequest 節點還可用來呼叫利用 SAML 2.0 提供安全功能的 Web 服務。
HTTP_ID HTTPInput 節點會擷取在輸入訊息中傳遞的身分。HTTPInput 節點依配置的安全內容識別構成訊息中身分之使用者名稱及密碼的位置。SecurityPEPNodeSample.bar 分配管理系統保存檔 (BAR) 的 HTTPInput 節點會透過 PEPSAMPLE_HTTP_UPA1_EMUL 配置為安全設定檔。安全設定檔的 authentication 及 authenticationConfig 值會設為呼叫 STS 模擬來鑑別身分。如果在此節點鑑別使用者名稱及密碼身分記號失敗,則異常狀況清單會傳輸至 Failure 端。如果鑑別成功,則訊息會傳輸至下一個節點 GetAuthenticationType。
GetAuthenticationType Compute 節點會從輸入訊息的內容中提取 DemonstrateTokenType 欄位,並適當地進行遞送。DemonstrateTokenType 欄位值可以是 UP 或 SAML。如果兩者皆不是,則會產生使用者異常狀況。
PEP_UP_A1A2 SecurityPEP 節點會擷取輸入訊息中的使用者名稱及密碼身分,以示範 SecurityPEP 節點依配置的安全內容識別訊息中的身分位置。SecurityPEPNodeSample.bar 分配管理系統保存檔 (BAR) 的 PEP 節點會透過 PEPSAMPLE_PEP_UPA1A2_EMUL 的安全設定檔進行配置。安全設定檔的 authentication、authenticationConfig、authorization 及 authenticationConfig 值會設為呼叫 STS 模擬,以同時鑑別並授權身分。如果 UP 記號的鑑別及授權成功,則訊息會傳輸至 Compute 節點,在該節點位置會更新訊息內文中的安全作業狀態,並傳回回覆。
PEP_MAP_UP->SAML2.0 SecurityPEP 節點會重複使用在輸入訊息中傳遞的身分,並將其放入內容樹狀結構安全欄位。當將配置的安全內容設為現行記號時,SecurityPEP 節點會使用現行身分。SecurityPEPNodeSample.bar BAR 檔案的 PEP 節點會透過 PEPSAMPLE_PEP_MAPUP2SAML2.0_EMUL 的安全設定檔進行配置。安全設定檔的 mapping 及 mappingConfig 值會設為呼叫 STS 模擬,以根據 SAML 2.0 內容的使用者名稱及密碼執行記號交換。然後,會將對映的 SAML 記號放入訊息內文中,以便可以透過配置為呼叫 SecurityPEPNodeReportFlow.msgflow 訊息流程的 "HTTP Request-SAMLA1" HTTPRequest 節點將其轉遞至某服務。
由 SecurityPEPNodeSampleFlow.msgflow 訊息流程中的 HTTPRequest 節點所呼叫的 HTTP 服務會顯示在下列 SecurityPEPNodeReportFlow.msgflow 圖中:
此流程的 SecurityPEP 節點會擷取存在於輸入訊息的訊息內文中的 SAML2.0,並呼叫安全提供者來驗證 SAML2.0。SecurityPEPNodeSample.bar BAR 檔的 PEP 節點會透過 PEPSAMPLE_HTTP_SAMLA1_EMUL 的安全設定檔進行配置。安全設定檔的 authentication 及 authenticationConfig 值會設為呼叫 STS 模擬來驗證 SAML 內容。如果 SAML2.0 的內容驗證成功,則訊息會傳輸至 Compute 節點,在該節點位置會更新訊息內文中的安全作業狀態,並傳回回覆。
此範例使用 SecurityPEPNodeSampleSTSEmulatorFlow.msgflow 訊息流程來模擬外部提供者所執行的安全作業,請參閱下圖:
此流程包含 "HTTP WS Request" HTTPInput 節點,當 SecurityPEPNodeSampleFlow.msgflow 訊息流程中的 HTTPInput 及 SecurityPEP 節點呼叫安全作業時,該節點會收到由 IBM Integration 安全管理程式所提出的 WS-Trust 要求。該流程具有數個可模擬安全提供者結果並準備 WS-Trust 回應的 Compute 節點。
附註:模擬使用在每次執行時都會產生相同 WS-Trust 回應的固定資料。若為 SAML 記號,日期不會動態進行變更。例如,IssueInstant="2010-04-14T07:10:53Z"、NotBefore="2010-04-14T07:00:53Z" 及 NotOnOrAfter="2010-04-15T07:10:53Z"。模擬不會檢查這些日期及 SAML 內容的有效性期間。
以下三個輸入訊息是針對執行 Security Policy Enforcement Point (PEP) 範例而提供的。
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>broker01</Username> <Password>passw0rd01</Password> <IssuedBy>Issuer1</IssuedBy> <DemonstrateTokenType>SAML</DemonstrateTokenType> </MessageIdentity> </Body> </Envelope>
此訊息在下列檔案中提供:
.xml 檔案位於下列子資料夾中:SecurityPEPNodeSampleApplicationProject/SampleTestMessages/TestMessage_UPA1_MAP2SAML2.0_A1.xml
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>broker01</Username> <Password>passw0rd01</Password> <IssuedBy>Issuer1</IssuedBy> <DemonstrateTokenType>UP</DemonstrateTokenType> </MessageIdentity> </Body> </Envelope>
此訊息在下列檔案中提供:
.xml 檔案位於下列子資料夾中:SecurityPEPNodeSampleApplicationProject/SampleTestMessages/TestMessge_UP_A1A2.xml
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>dummy_usr</Username> <Password>passw0rd01</Password> <IssuedBy>Issuer1</IssuedBy> <DemonstrateTokenType>UP</DemonstrateTokenType> </MessageIdentity> </Body> </Envelope>
此訊息在下列檔案中提供:
.xml 檔案位於下列子資料夾中:SecurityPEPNodeSampleApplicationProject/SampleTestMessages/TestMessage_UP_A1_failure.xml