You're viewing **Apigee Edge** documentation.  
[Go to the
**Apigee X** documentation](http://cloud.google.com/apigee/docs/api-platform/reference/pay-as-you-go-updated-faq). info

## Getting started

How do I install Edge Microgateway?
:   See [Installing
    Edge Microgateway](https://docs.apigee.com/api-platform/microgateway/latest/installing-edge-microgateway).

How do I run Edge Microgateway?
:   See [Setting up and configuring Edge Microgateway](https://docs.apigee.com/api-platform/microgateway/latest/setting-and-configuring-edge-microgateway).

Do I need a database to run
Microgateway?
:   APIs proxied through Edge Microgateway may interact with a database running as part of a target
    service. However, Edge Microgateway operates independently of any database or backend data
    store.

## Operation

What changes on Edge
require a restart of Edge Microgateway?
:   Edge Microgateway automatically polls for changes made on Apigee Edge, such as changes to
    microgateway-aware proxies, products, or developer
    apps. The default polling interval is 600 seconds; however, you can change the interval with the
    `config_change_poll_interval` configuration setting.
    See [edgemicro attributes](https://docs.apigee.com/api-platform/microgateway/latest/operation-and-configuration-reference-edge-microgateway#edgemicrogatewayconfigurationreference-edgemicroattributes).
:   If you do not want to wait for the polling interval, use the `edgemicro reload`
    command to pick up the latest changes. See
    [Reloading the microgateway cluster](https://docs.apigee.com/api-platform/microgateway/latest/cli-reference-edge-microgateway#reloading-the-microgateway-cluster).


How do I differentiate between a proxy deployed on Edge vs. a proxy on Edge Microgateway?
:   When you configure Edge Microgateway, a list of microgateway-aware proxies deployed on Apigee
    Edge is downloaded to the local configuration of Edge Microgateway. Microgateway-aware proxies
    are ones named with the prefix `edgemicro_`.


What are my options for logging with Edge Microgateway?
:   Edge Microgateway has a built-in logging feature. For details, see [Managing log files](https://docs.apigee.com/api-platform/microgateway/latest/operation-and-configuration-reference-edge-microgateway#managinglogfiles).
:   You can also write
    [a
    custom plugin](https://docs.apigee.com/api-platform/microgateway/3.1.5/develop-custom-plugins) to use a third-party logging service with Edge Microgateway. Because of the way
    Edge Microgateway works, you cannot use the Apigee Edge
    [Message Logging policy](https://docs.apigee.com/api-platform/reference/policies/message-logging-policy)
    to log messages for Edge Microgateway. See also the
    [Logging Plugin for Microgateway](https://discuss.google.dev/t/logging-plugin-for-microgateway/4972) community article.


Can I reuse key/secret combinations between instances of Edge Microgateway?
:   As long as the organization and environment are the same for the Microgateway instances, you can
    reuse the key/secret pair that get generated during configuration.


How do I configure Edge Microgateway to start up in a production environment?
:   You can set the environment variables for startup command parameters, such as `EDGEMICRO_KEY`,
    `EDGEMICRO_SECRET`, `EDGEMICRO_ORG`, and `EDGEMICRO_ENV`.
    With these (and other) variables you can start
    Edge Microgateway with the single command `edgemicro start`. See also [Setting environment variables](https://docs.apigee.com/api-platform/microgateway/latest/operation-and-configuration-reference-edge-microgateway#settingenvironmentvariables).

Can I
use custom product or developer app attributes with Edge Microgateway?
:   No. By default, Edge Microgateway only acts on attributes related to basic routing and
    security. However, as workarounds, you have the following possible option:

    1. Add custom attributes to the `edgemicro-auth` proxy that Edge Microgateway deploys to Apigee Edge. These attributes will be available when using API Key or OAuth token security.
    2. Modify the OAuth plugin to act on those attributes.


Is there a limit on request header size?
:   If you upgrade Node.js to [v8.14.0](https://nodejs.org/en/blog/release/v8.14.0)
    or a later version, be aware that the maximum header size allowed on requests was reduced from 80KB to 8KB.
    Headers that exceed 8KB result in an HTTP 431 error.
:   A Node.js configuration option added in Node.js v11.6.0 lets you change the default maximum
    header size. This parameter, `--max-http-header-size`, lets you specify
    the maximum size, in bytes, of HTTP headers.
:   To change the default configuration, set the value of the `NODE_OPTIONS` environment
    variable on the command line as follows:

    ```
    NODE_OPTIONS=--max-http-header-size=NUM_BYTES
    ```


    For example:


    ```
    NODE_OPTIONS=--max-http-header-size=80000
    ```


## What management APIs does Edge Microgateway use?


The following Edge Microgateway commands call Apigee Edge management APIs to do their work,
as described in [CLI reference for Edge Microgateway](https://docs.apigee.com/api-platform/microgateway/3.1.x/cli-reference-edge-microgateway):

- `edgemicro configure`
- `edgemicro upgradeauth`
- `edgemicro upgradekvm`
- `edgemicro rotatekey`
- `edgemicro cert check`
- `edgemicro cert delete`
- `edgemicro cert install`


The following sections list the management API calls that each command uses.


The `edgemicro configure` and `upgradeauth` commands call
the following management APIs:

- (list deployments) `GET: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/deployments`
- (get deployment info) `GET: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=java&name=micro-gateway-products-javacallout-2.0.0.jar`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=adjust-quota.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=generate-jwk.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=generate-verify-jwt.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=jsrsasign-all-min.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=jwt-initialization.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-jwk-response.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-product-list.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=send-public-key.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-jwt-variables.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-quota-variables.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=set-response.js`
- (upload resources) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/resources?type=jsc&name=validate-params.js`
- (create api proxy) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis?action=import&validate=false&name=edgemicro-auth`
- (upload policies) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/policies`
- (upload proxies) `POST: https://api.enterprise.apigee.com/v1/o/[org]/apis/edgemicro-auth/revisions/1/proxies?name=default`
- (deploy proxy) `POST: https://api.enterprise.apigee.com/v1/o/[org]/e/[env]/apis/edgemicro-auth/revisions/1/deployments`


The `upgradekvm` command calls the following management API:

- `PUT: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway`


The `rotatekey` command calls the following management API:

- `GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway/entries/private_key`


The `cert check` command calls the following management API:

- `GET: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway`


The `cert delete` command calls the following management API:

- `DELETE: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps/microgateway`


The `cert install` command calls the following management API:

- `POST: https://api.enterprise.apigee.com/v1/organizations/[org]/environments/[env]/keyvaluemaps`

## Deployment

Can I deploy
Edge Microgateway on the same server where my target service is running?
:   Yes. Edge Microgateway is a lightweight process that can run close to your target service, including on
    the same machine.


Can I deploy an existing Edge proxy bundle as an Edge Microgateway deployment?
:   No. Edge Microgateway-aware proxies have specific requirements and do not support all the features
    of regular Edge proxies. See [Part
    2: Create entities on Apigee Edge](https://docs.apigee.com/api-platform/microgateway/latest/setting-and-configuring-edge-microgateway#part2createentitiesonapigeeedge)


Can I enable failover between an Edge proxy bundle
deployment and Edge Microgateway deployment for the same API Proxy?
:   No. Edge Microgateway does not know about non-microgateway API proxy deployments on Apigee
    Edge.

What is the
high availability deployment model for Edge Microgateway?
:   For a good discussion of how to run Edge Microgateway using NGINX as a load balancer, see
    [Managing APIs with Apigee Edge Microgateway and NGINX](https://discuss.google.dev/t/managing-apis-with-apigee-edge-microgateway-and-nginx/17876).


Which load balancers can I use with Edge Microgateway?
:   Edge Microgateway can work with any load balancer.


Is there a limit on how many Edge Microgateway proxies I can deploy?
:   Refer to the [product configuration limits](https://docs.apigee.com/api-platform/reference/limits) specified for
    regular Edge proxies. The number of microgateway-aware proxies you can deploy in an Apigee Edge
    organization and environment and call through Edge Microgateway must conform to those same limits.

Can I
associate my Edge Microgateway deployment to a specific organization and environment?
:   When you configure an instance of Edge Microgateway you must associate it with a specific
    Edge organization and environment.


Can I associate my Edge Microgateway deployment to a specific region (if I am a multi-region customer)?
:   Edge Microgateway automatically picks the best region for its interaction with Apigee Edge.
    You can deploy Edge Microgateway instances in each region that you want to service.

## Administration


Do I need to be an org administrator to configure and deploy Edge Microgateway?
:   Yes. You need to have org admin credentials to configure and deploy Edge Microgateway.


Do I need to be an org administrator to run Edge Microgateway?
:   No. Edge Microgateway is a `Node.js` application, and can be run by anyone with
    permission to run such applications on a given machine.

Can any of my organization
users use Edge Microgateway?
:   You do not need to be an Apigee Edge organization user to make API calls through Edge
    Microgateway. However, you must have org-level permissions to create or change Edge Microgateway
    aware proxies that are deployed on Edge.

## Performance


What are the performance considerations for using Edge Microgateway?
:   If running Edge Microgateway collocated with the target application, be sure the server has
    sufficient capacity.


What are best practices for running Edge Microgateway at scale?
:   Apigee recommends running multiple instances of Edge Microgateway on different servers fronted
    by load balancers like [NGINX](https://www.nginx.com/resources/wiki/#). See also
    [Managing APIs with Apigee Edge Microgateway and NGINX](https://discuss.google.dev/t/managing-apis-with-apigee-edge-microgateway-and-nginx/17876) and [Vertical horizontal scaling](https://discuss.google.dev/t/apigee-edge-microgateway-vertical-and-horizontal-scaling-for-1000-tps-and-beyond/16413) on the Apigee Community.


What are the Edge Microgateway TPS by default and what are hardware requirements required for a
Microgateway instance
:   Hardware requirements and TPS measurements are difficult to gauge with Edge Microgateway. It depends
    on your setup, which is a combination of tuning Edge Microgateway, plugin usage, custom plugins,
    and configuring other things like TLS. Apigee typically recommends that you get an idea of that
    combination of items and do performance testing with your specific setup.

## Private Cloud deployment

Does Edge
Microgateway work with Edge for Private Cloud?
:   Yes. For details, see [Apigee Private Cloud configuration steps](https://docs.apigee.com/api-platform/microgateway/latest/setting-and-configuring-edge-microgateway#part1configureedgemicrogateway-apigeeprivatecloudconfigurationsteps).

## Plugins

How is Quota enforced with Edge
Microgateway?
:   You can optionally add a quota plugin to your instance of Edge Microgateway. For details see
    [Using the quota
    plugin](https://docs.apigee.com/api-platform/microgateway/latest/use-plugins#usingthequotaplugin).

How is Spike Arrest
enforced with Edge Microgateway?
:   You can optionally add a spike arrest plugin to your instance of Edge Microgateway. For
    details see [Using the spike
    arrest plugin](https://docs.apigee.com/api-platform/microgateway/latest/use-plugins#usingthespikearrestplugin).

Are
there other ways to write plugins other than `Node.js` for Edge Microgateway?
:   No. Plugins must be written in `Node.js`.


What happens when Edge Microgateway is not able to upload Analytics data to Edge?
:   Edge Microgateway has an in-memory buffer. If the buffer fills up, older payloads are dropped
    to let API traffic flow smoothly.

Can I add policies to Edge
Microgateway?
:   If you attach regular Apigee Edge policies to *microgateway-aware*
    proxies in Apigee Edge, they are ignored. Instead, Edge Microgateway uses *plugins* to provide
    functionality similar to policies in Edge, such as quota, spike arrest, API key security, and
    OAuth2 security. You can also write custom plugins. See
    [Use plugins](https://docs.apigee.com/api-platform/microgateway/latest/use-plugins) and
    [Develop custom plugins](https://docs.apigee.com/api-platform/microgateway/latest/develop-custom-plugins).

    The following Apigee Community posts and blogs discuss additional plugin use cases:


    - [How to override the default URL on Edge Microgateway](https://discuss.google.dev/t/how-to-override-default-url-on-edge-micro-gateway/16456)
    - [How to get Quota working in Edge Microgateway](https://discuss.google.dev/t/how-do-i-get-quota-working-in-microgateway/16398)
    - [Adding a logger plugin to Edge Microgateway](https://discuss.google.dev/t/logging-plugin-for-microgateway/4972)

## Security

How do I protect the `/products` resource?
:

    > [!NOTE]
    > **Note:** If you installed Edge Microgateway on or before October 5, 2018, Apigee recommends that you consider performing the steps in this section to protect the `/products` endpoint of the `edgemicro-auth` proxy.


Overview
:   When you [configure Edge Microgateway](https://docs.apigee.com/api-platform/microgateway/latest/setting-and-configuring-edge-microgateway#Part1),
    an API proxy called `edgemicro-auth` is deployed
    to your organization:environment on Apigee Edge. This proxy exposes a `/products` endpoint that returns a
    list of API Products. If you installed Edge Microgateway on or before October 5, 2018, Apigee recommends
    that you take steps to protect this endpoint, because the response
    contains the email address of the developer who created and modified the API Products in your Apigee
    organization.
:   You can protect the endpoint by upgrading Edge Microgateway or by configuring Mutual TLS. Both
    of these options are described below.

Check if the `/products` endpoint is protected

:
    If you are unsure whether the `/products` endpoint is protected, go to the section
    [Verify that the `/products` resource is protected](https://docs.apigee.com/api-platform/faq/edge-microgateway-faq#verifytheresourceisprotected) and do the steps there
    before continuing.

    **Option 1: Upgrade Edge Microgateway**


    If you installed Edge Microgateway on or before October 5, 2018, Apigee recommends that you upgrade to the
    latest version of Edge Microgateway. Follow the steps in
    [Upgrading Edge Microgateway if you have an internet connection](https://docs.apigee.com/api-platform/microgateway/latest/operation-and-configuration-reference-edge-microgateway#upgrading-edge-microgateway-if-you-have-an-internet-connection).

    If you are unable to upgrade at this time, go to Option 2.

    **Option 2: Configure Mutual TLS**

    If you are unable to upgrade Edge Microgateway at this time, Apigee *recommends* that you protect the
    communication between Edge Microgateway and the `edgemicro-auth` proxy with mutual
    TLS (also known as two-way TLS).

    1. Open the file `$HOME/.edgemicro/org-env-config.yaml`. See [Where is Edge Microgateway installed](https://docs.apigee.com/api-platform/microgateway/latest/installing-edge-microgateway#whereisedgemicrogatewayinstalled) if you can't locate this file.
    2. Add the following `tlsOptions` block to the `org-env-config.yaml` file to enable mutual TLS between Edge Microgateway and Apigee Edge:

       > [!NOTE]
       > **Note:** You must set `requestCert` to `true` for this property to be enabled.

       ```
       edge_config:
         bootstrap: >-
           https://domain/edgemicro/bootstrap/organization/org/environment/env
         jwt_public_key: 'https://domain/edgemicro-auth/publicKey'
         managementUri: 'https://api.enterprise.apigee.com'
         tlsOptions:
           agentOptions:
             requestCert: true
             cert: 'path/to/cert'
             key: 'path/to/key'
       ```

       For example:

       ```
       tlsOptions:
         agentOptions:
           requestCert: true
           cert: '/Users/jdoe/twowayssl/ssl/client.key'
           key: '/Users/jdoe/twowayssl/ssl/ca.crt'
       ```


       You can also include the following optional `agentOptions` parameters:
       - `ca`: Specifies the path to certificate authority.
       - `pfx`: Include if you wish to use a p12/pfx file instead of cert and key.
       - `passphrase`: The passphrase for a pfx file.
       - `ciphers`: Specifies TLS ciphers.
    3. Ensure the virtual host to which the `edgemicro-auth` proxy is deployed has mutual TLS enabled. For details, see [Defining a virtual host for two-way TLS](https://docs.apigee.com/api-platform/fundamentals/configuring-virtual-hosts-cloud#definingavirtualhostfortwowaytls) in the Apigee Edge documentation.

       The following screenshot shows how to enable mutual TLS on a virtual host in the Apigee Edge UI:
       ![](https://docs.apigee.com/static/api-platform/images/emg-mutual-tls-enabled.png)
    4. Look at the `edgemicro-auth` API proxy in the Edge UI, and ensure that the correct virtual host is specified in the proxy config. For example, if you created a TLS-enabled virtual host called `mutualtls`, the proxy's `HTTPProxyConnection` stanza should look like this:

       ```
       <HTTPProxyConnection>
           <BasePath>/edgemicro-auth</BasePath>
           <Properties/>
           <VirtualHost>mutualtls</VirtualHost>
       </HTTPProxyConnection>
       ```
Verify that the `/products` resource is protected This section explains how to test to check if the `/products` resource is protected. It's important to perform this test after you have completed the steps (Option 1 or Option 2) to protect the resource. You can do this with cURL, for example:

```
curl -v https://your_domain/edgemicro-auth/products
```

> [!NOTE]
> **Note:** If you are using Edge Private Cloud, use the router IP. If you have a custom domain, then use your custom domain name (for example: api.companyname.com).

If you see a response like one of the following, the `/products` endpoint is protected:

```
{
  "error":"unauthorized",
  "error_description": "authentication failed"
}
```

OR

```
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
```


If you see a response that looks like this, then the `/products` resource is unprotected
and developer emails can be exposed:

```
{
   "apiProduct":[
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[

         ],
         "createdAt":1537374680948,
         "createdBy":"jdoe@foo.com",
         "description":"",
         "displayName":"mock",
         "environments":[
            "test"
         ],
         "lastModifiedAt":1537374680948,
         "lastModifiedBy":"test@test.com",
         "name":"mock",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_mock"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[
            ""
         ]
      }
   ]
}
```

Apigee also recommendeds that you test the HTTP virtual host:

For example:

```
curl -v http://your_domain/edgemicro-auth/products
```

If the cURL call returns the list of API Products, then it's possible that developer emails are
exposed. If you do not wish to expose the endpoint with this non-TLS virtual host, be sure to remove it from the
`edgemicro-auth` HTTPProxyConnection configuration.

To protect the resource do *one* of the following options:

- [Option 1: Upgrade Edge Microgateway](https://docs.apigee.com/api-platform/faq/edge-microgateway-faq#upgradeedgemicrogateway).
- [Option 2: Configure Mutual TLS](https://docs.apigee.com/api-platform/faq/edge-microgateway-faq#configuremutualtls).
How can I renew an expired access token? Currently, you cannot renew the JWT token for a given Edge Microgateway instance.

**Workaround:**

Each JWT token has an exp attribute that states the expiration date of the token. An app can
calculate the expiration time and request a new token by making an API call directly to the
`edgemicro-auth` token endpoint. For example, you can make an API call like this:

`POST https: //{your_org}-{your_env}.apigee.net/edgemicro-auth/token`

... with a JSON body like this:

`{ "client_id": {your_id}, "client_secret": {your_secret},
"grant_type": "client_credentials" }`

See also:

- [Secure
  the API with either an OAuth token or an API key](https://docs.apigee.com/api-platform/microgateway/latest/setting-and-configuring-edge-microgateway#part4secureedgemicrogateway) in the Edge Microgateway docs.
- [What's
  the process for renewing bearer tokens when they expire](https://discuss.google.dev/t/whats-the-process-for-renewing-bearer-tokens-when-they-expire/16366) on the Apigee Community.
Configuring SSL on Windows If you are running Edge Microgateway on Windows, [OpenSSL](https://www.openssl.org/) must be installed on the machine and added to the PATH. Not all Windows machines are shipped with OpenSSL. Refer to the [OpenSSL documentation](https://www.openssl.org/docs/) for information about downloading and installing OpenSSL. Can I allow access to API resources using the API product associated with an Edge Micro-aware proxy? Currently, only the basepath is checked to determine if an API is approved for API Products
associated with a particular OAuth token.

For example:

1. You create an `edgemicro_` prefixed proxy with base path and target.
2. You add this proxy to a product. Let's call it `edgemicro-prod1`.
3. When an API call is made through Edge Microgateway using either an API key or an OAuth token, Edge Microgateway checks if the basepath of the API matches with the basepath of `edgemicro_*` proxy that is approved for the list of products approved for that key or token.

See also [When using the edgemicro gateway in the products which url needs whitelisting in the products
used under resources?](https://discuss.google.dev/t/when-using-the-edgemicro-gateway-in-the-products-which-url-needs-whitelisting-in-the-products-used-under-resources-in-addition-to-the-proxy-being-added-to-the-product/16437) on the Apigee Community.
Can I use custom SSL certificates with Edge Microgateway? Only the [default Apigee SSL
cert](https://docs.apigee.com/api-platform/system-administration/using-ssl-edge) is currently supported. Custom SSL certs are not supported at this time.

**Workarounds:**

If you wish to use a custom (non-Apigee default) SSL cert, you have these options:

- Use a non-SSL `jwt_public_key` endpoint. Modify Edge Microgateway configuration file to use `http://{org}-{env}.apigee.net/edgemicro-auth/publicKey` -or-
- Before starting Edge Microgateway, set this environment variable: export `NODE_TLS_REJECT_UNAUTHORIZED ="0"`

> [!NOTE]
> **Note:** Also be sure you are using the supported version of `Node.js` for your version of Edge Microgateway. See [Prerequisites](https://docs.apigee.com/api-platform/microgateway/latest/installing-edge-microgateway#prerequisites) in the Install doc for Edge Microgateway.

See also [Verify Edge Micro install errors on SSL cert](https://discuss.google.dev/t/verify-edge-micro-install-errors-on-ssl-cert/16482) on the Apigee Community.
Can I avoid using Org Admin accounts with Edge Microgateway? The Edge Microgateway configuration script deploys an `edgemicro-auth` proxy to Edge, and this deployment requires Org Admin credentials. However, after this initial deployment, you should be able to do the remaining setup and configuration without needing Org Admin credentials. See also this community post on [org admin credentials](https://discuss.google.dev/t/do-you-guys-have-any-guidance-on-how-to-set-up-an-rbac-role-to-support-micro-gateway-w-o-having-to-use-an-org-admin-accout/16496). Can I use my own OAuth token with Edge Microgateway?
You can use your own token, but first, you must turn off the built-in authorization for Edge
Microgateway. To do this:

1. Open the config file for Edge Microgateway.
2. Change the two oauth settings to true, as follows:

   ```
   oauth:
       allowNoAuthorization: true
       allowInvalidAuthorization: true
   ```
I am getting an access denied error when starting Edge Microgateway If you get an access denied error when starting Edge Microgateway with this command: `edgemicro start -o [org] -e [env] -k [key] -s [secret]` It is possible the key and secret are not valid for some reason. The best thing to do is regenerate the key and secret with the [edgemicro genkeys command](https://docs.apigee.com/api-platform/microgateway/latest/cli-reference-edge-microgateway#generating-keys).

## Testing and debugging

How do
I prevent "too many file open" errors during load testing?

:
    In some cases, your system may run into a situation where too many open file connections, and
    this can cause Edge Micro to crash. The default logging requires two HTTP connections for
    incoming and outgoing transactions through the Microgateway.

    For testing and benchmarking purposes, Apigee recommends setting your system's ulimit command
    to unlimited: `ulimit -n unlimited`. See also [Edge
    Microgateway error during load testing](https://discuss.google.dev/t/edge-microgateway-error-during-load-testing/16408) on the Apigee Community.

Tips for rapid
development and debugging

:
    If you are developing plugins for Edge Microgateway, you may find that support for rapid
    development is limited.

    For now, here are some tips:

    - For starting Edge Microgateway, you can set the environment variables EDGEMICRO_KEY and EDGEMICRO_SECRET to the key/secret pair required by the Microgateway startup command. This allows you to start Edge Microgateway without entering the key/secret at the command line. See also [Setting environment variables](https://docs.apigee.com/api-platform/microgateway/latest/operation-and-configuration-reference-edge-microgateway#settingenvironmentvariables) in the Edge Microgateway docs.
    - Start Edge Microgateway in DEBUG mode to see additional output in the command terminal: `DEBUG=* edgemicro start -o [org] -e [env] -k [key] -s [secret]`

## Business and licensing


What is the relationship between Apigee-127 and Edge Microgateway support models?

:
    [Apigee-127](https://github.com/apigee-127) is an open source software project that is supported in the open source model. That
    is, you can raise issues in the GitHub project and make a pull request if you attempt to fix
    something. Apigee-127 does not require or include any Software Licenses Agreements with
    Apigee.

    Edge Microgateway, on the other hand, is an Enterprise product that is supported by Apigee for
    Apigee customers. That is, Apigee customers can create support tickets, feature requests, and bug
    reports using Google Cloud [Apigee Edge Support](https://docs.apigee.com/api-platform/troubleshoot/support).

    > [!NOTE]
    > **Note:** Edge Microgateway is not in any way based on Apigee-127. They are completely different projects with different goals. The only similarity is that both are implemented in `Node.js`. You must not assume any other commonality.