Files
oic_migration_api/index.md
2023-10-20 22:52:01 -03:00

9.0 KiB

Migrate your APIs to Oracle Cloud API Gateway

Introduction

Objectives

Prerequisites

Task 1: Understand your Source API data structure

Excel_api_migration_source.png

[ {
  "API_NAME" : "cep",
  "TYPE" : "REST",
  "METHOD" : "GET",
  "PATH_PREFIX" : "/okecep",
  "PATH" : "/cep",
  "ENDPOINT" : "http://129.153.138.208/cep",
  "QUERY_PARAMETERS" : "cep",
  "GROOVY_SCRIPT" : "",
  "AUTHENTICATION_TYPE" : "BASIC",
  "ENVIRONMENT" : "QA",
  "HEADER" : "",
  "HEADER_VALUE" : ""
}, {
  "API_NAME" : "calculator",
  "TYPE" : "SOAP",
  "METHOD" : "POST",
  "PATH_PREFIX" : "/dneonline",
  "PATH" : "/calculator",
  "ENDPOINT" : "http://www.dneonline.com/calculator.asmx",
  "QUERY_PARAMETERS" : "",
  "GROOVY_SCRIPT" : "",
  "AUTHENTICATION_TYPE" : "BASIC",
  "ENVIRONMENT" : "DEV",
  "HEADER" : "",
  "HEADER_VALUE" : ""
} ]

Task : Understand the OCI API Gateway Deployment Data

 {
    "requestPolicies": {
      "authentication": {
        "type": "CUSTOM_AUTHENTICATION",
        "tokenHeader": "",
        "tokenQueryParam": "",
        "tokenAuthScheme": "authentication-scheme",
        "isAnonymousAccessAllowed": false,
        "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaac2______kg6fq",
        "maxClockSkewInSeconds": 0,
        "validationPolicy": {
          "type": "REMOTE_DISCOVERY",          
          "clientDetails": {
            "type": "CUSTOM",
            "clientId": "client-id",
            "clientSecretId": "secret-ocid",
            "clientSecretVersionNumber": 0
          },          
          "sourceUriDetails": {
            "type": "DISCOVERY_URI",
            "uri": "well-known-uri"
          },
          "isSslVerifyDisabled": true,
          "maxCacheDurationInHours": 0,
          "additionalValidationPolicy": {
            "issuers": ["issuer-url", "issuer-url"],
            "audiences": ["intended-audience"],
            "verifyClaims": [{
              "key": "claim-name",
              "values": ["acceptable-value", "acceptable-value"],
              "isRequired": true
            }]
          }
        },
        "tokenHeader": "Authorization",
        "validationPolicy": {
          "type": "REMOTE_DISCOVERY",
          "clientDetails": {
            "type": "CUSTOM",
            "clientId": "5hsti38yhy5j2a4tas455rsu6ru8yui3wrst4n1",
            "clientSecretId": "ocid1.vaultsecret.oc1.iad.amaaaaaa______cggit3q",
            "clientSecretVersionNumber": 1
          },          
          "sourceUriDetails": {
            "type": "DISCOVERY_URI",
            "uri": "https://my-idp/oauth2/default/.well-known/openid-configuration"
          },
          "isSslVerifyDisabled": false,
          "maxCacheDurationInHours": 2,
          "additionalValidationPolicy": {
            "issuers": ["https://identity.oraclecloud.com/"],
            "audiences": ["api.dev.io"],
            "verifyClaims": [{
              "key": "is_admin",
              "values": ["service:app", "read:hello"],
              "isRequired": true
            }]
          }
        }
      }, 
      "mutualTls":{
        "isVerifiedCertificateRequired": true,
        "allowedSans": ["api.weather.com"]
      }
    },
    "routes": [
      {
        "path": "/weather",
        "methods": ["GET"],
        "backend": {
          "type": "HTTP_BACKEND",
          "url": "https://api.weather.gov/${request.auth[region]}"
        },
        "requestPolicies": {
          "authorization": {
            "type": "ANY_OF",
            "allowedScope": [ "weatherwatcher" ]
          },
          "headerValidations": {
            "headers": {
              "name": "header-name",
              "required": true
            },
            "validationMode": "ENFORCING|PERMISSIVE|DISABLED"
          },
          "queryParameterValidations": {
            "parameters": {
              "name": "query-parameter-name",
              "required": true
            },
            "validationMode": "ENFORCING|PERMISSIVE|DISABLED"
          },
          "bodyValidation": {
            "required": true,
            "content": {
              "media-type-1": {
                "validationType": "NONE"
              },
              "media-type-2": {
                "validationType": "NONE"
              }            
            },
            "validationMode": "ENFORCING|PERMISSIVE|DISABLED"
          },
          "headerTransformations": {
            "renameHeaders": {
              "items": [
                {
                  "from": "original-name",
                  "to": "new-name"
                }
              ]
            },
            "setHeaders": {
              "items": [
                {
                  "name": "header-name",
                  "values": ["header-value"],
                  "ifExists": "OVERWRITE|APPEND|SKIP"
                }
              ]
            }            
          },
          "queryParameterTransformations": {
            "filterQueryParameters": {
              "type": "BLOCK|ALLOW",
              "items": [
                {
                  "name": "query-parameter-name"
                }
              ]
            },
            "renameQueryParameters": {
              "items": [
                {
                  "from": "original-name",
                  "to": "new-name"
                }
              ]
            },
            "setQueryParameters": {
              "items": [
                {
                  "name": "query-parameter-name",
                  "values": ["query-parameter-value"],
                  "ifExists": "OVERWRITE|APPEND|SKIP"
                }
              ]
            }            
          }          
        },
        "responsePolicies": {
          "headerTransformations": {
            "filterHeaders": {
              "type": "BLOCK|ALLOW",
              "items": [
                {
                  "name": "header-name"
                }
              ]
            },
            "renameHeaders": {
              "items": [
                {
                  "from": "original-name",
                  "to": "new-name"
                }
              ]
            },
            "setHeaders": {
              "items": [
                {
                  "name": "header-name",
                  "values": ["header-value"],
                  "ifExists": "OVERWRITE|APPEND|SKIP"
                }
              ]
            }                        
          }
        }        
      }
    ]
  }

Task 2: Create Connections

connection_rest_1.png Connection_Rest_2.png Connect_Rest_3.png

Connection_Apigateway_Rest_Api.png

Task 3: Create the Integration

Create_Integration_1.png

Integration_1.png

Integration_1a.png

Integration_1b.png

Integration_1c.png

Integration_1d.png

Integration_2.png

Integration_2a.png

Integration_3.png

Integration_3a.png

Integration_4.png

Integration_4a.png

Integration_4b.png

Integration_4c.png

Integration_5.png

Integration_5a.png

Integration_5b.png

Integration_5c.png

Integration_5d.png

Integration_5e.png

Integration_5f.png

Integration_6.png

Integration_6a.png

Integration_6b.png

Integration_6c.png

Integration_6d.png

Task : Test the migration

Test_1aa.png

Test_1.png

Test_1a.png

Test_2.png