建立 API 閘道部署
您可以在函數就緒之後,整合並測試從 Oracle Identity Cloud Service 進行 JWT 驗證的原生認證機制。
使用原生 JWT 驗證建立 API 閘道部署
您可以使用「Oracle Cloud Infrastructure 閘道原生 JWT 驗證」功能,針對部署新增以 Java Web 權杖 (JWT) 為基礎的認證原則。
此 JWT 類型可讓您指定必要的資料,以執行內送存取權杖的驗證 (透過標頭或參數)。此原則需要以下資訊:
- 允許發照者:記號發照者。支援數個 OAuth 伺服器,但在此情況下,您將使用
https://identity.oraclecloud.com/
。 - 對象:允許存取此記號的資源。
- 公開金鑰:發照者與對象內用來驗證記號的 JSON Web 金鑰集 (JWKS)。允許使用兩種 JWKS:
- 靜態金鑰:使用此選項時,您必須使用 JSON 格式手動指定 JWKS,此格式應具有根據 RFC 7517 第 4 部分的必要特性。
- 遠端金鑰:使用此選項,您必須指定可使用 REST 來使用 JWKS 的 URL。此功能的限制是,指定的 URL 必須是未受保護的 URL,因為目前此功能不支援讀取受保護的 URL 來擷取 JWKS。
- 進階選項:
- 最大規劃偏差 (秒):如果「API 閘道」與「身分識別提供者」在時間差異,此值可讓您調整記號有效期間時間,以嘗試調整兩個服務之間的時間。
- 宣告:驗證內送權杖是否需要的宣告。例如
client_id
宣告或user_id
宣告。
在 API 閘道中建立一個新的部署名稱並透過使用端點和 JWT 驗證,到達在先前步驟中建立的函數。在此範例中,建置的名稱為:my_jwt_test
。
my_jwt_test
有效負載的內容。
測試端點 REST 呼叫
若要測試新的端點 REST 呼叫,您可以使用 Postman 的 Get New Access Token 功能。
請注意,如果您在以下步驟中使用產生的記號,您將無法直接連線Oracle Fusion Applications Cloud Service 端點,因為記號是從Oracle Visual Builder產生的Oracle Identity Cloud Service App而且只能依據您先前設定的範圍,使用目前的組態連線Oracle Functions。此外,如果您使用不同的 Oracle Identity Cloud Service App 來產生記號,而且該應用程式沒有授權到達 Oracle Functions 資源範圍,API 閘道將不會允許要求 (將會傳回 401 錯誤),因為您已新增 Oracle Functions Oracle Identity Cloud Service 資源的目標對象。如果您已新增索賠從屬端 ID 驗證,API 閘道將只會確保記號只與指定的 Oracle Identity Cloud Service Apps client_ids 相符。
使用下列參數進行測試:
- 授權類型:密碼證明資料 -此「授權類型」可用來確保提供的使用者名稱將會是產生之權杖中的主體。
- 存取權杖 URL:您的 Oracle Identity Cloud Service 執行處理 OAuth URL。例如,
https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token
。 - 使用者名稱:存在於 Oracle Identity Cloud Service 和 Oracle Fusion Applications Cloud Service 中且同時具有適當權限的使用者。
- 密碼:輸入此使用者的密碼。
- ClientId:與 Oracle Visual Builder 關聯之 Oracle Identity Cloud Service 從屬端 Oracle Functions 資源的 ID。
- ClientSecret:與 Oracle Visual Builder 關聯之 Oracle Identity Cloud Service App Client Oracle Functions 資源的從屬端密碼
- 範圍:此範圍應與 Oracle Functions Oracle Identity Cloud Service App 提供的資源相符。例如,
https://myservice.apigateway.dc1.oci.customer-oci.com/saasextension
{
"principal": "mary.jane",
"gotPrincipalFrom": "BEARER",
"statusCode": "200",
"response": {
"items": [],
"count": 0,
"hasMore": false,
"limit": 25,
"offset": 0,
"links": [
{
"rel": "self",
"href": "https://myfusionservice.fa.dc1.oraclecloud.com:443/fscmRestApi/resources/11.13.18.05/expenses",
"name": "expenses",
"kind": "collection"
}
]
}
}
選擇性地使用自訂認證建立 API 閘道部署
如果您選擇使用自訂「認證函數」來驗證「持有者記號」對「API 閘道端點」的內送呼叫,請使用此方法。
這是您在選擇性的「定義 Oracle Cloud Infrastructure 中的認證函數」段落後面加上位數時所定義的選擇性函數。
下列程式碼片段是一個範例 Oracle Cloud Infrastructure API 部署規格 JSON 檔案、您可以使用此檔案進行部署、而非使用精靈。我們可以在此檔案內查看:
- 第 1-8 行:認證要求原則。此定義指示此部署的任何要求、第一個呼叫此函數 (functionId)、傳送 tokenHeader、如果傳回 true、則繼續進行、否則請以 HTTP 未授權訊息回應。
- 行 9-17:用來管理和控制交叉來源資源共用的 CORS 定義。
- 第 18-43 行:FaaS 中的兩個 URL 進入點/VERlob 會轉換成個別功能。
{
"requestPolicies": {
"authentication": {
"type": "CUSTOM_AUTHENTICATION",
"isAnonymousAccessAllowed": true,
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx",
"tokenHeader": "Authorization"
}
"cors":{
"allowedOrigins": [<list-of-origins>],
"allowedMethods": [<list-of-methods>],
"allowedHeaders": [<list-of-implicit-headers>],
"exposedHeaders": [<list-of-exposed-headers>],
"isAllowCredentialsEnabled": <true|false>,
"maxAgeInSeconds": <seconds>
}
},
"routes": [
{
"path": "/opportunities",
"methods": [
"GET"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
},
{
"path": "/opportunities/{optyid}",
"methods": [
"PATCH"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
}
]
}
</seconds></true|false></list-of-exposed-headers></list-of-implicit-headers></list-of-methods></list-of-origins>