Last-mile security with OAuth-enabled APIs


what recommended approach last-mile security (between apim proxy , back-end services) apis protected using oauth 2.0?

seems options are:

  1. on api -> security tab, configure proxy authentication "none", and use ip white-listing ensure apim proxy can communicate back-end service (which must available on public internet).  this approach requires static ip apim available in standard tier (thus more expensive while in development).
  2. on api -> security tab, configure proxy authentication "none", , use shared secret approach, involves using secret, publisher-defined key/value pair in request header coming apim (with special code on back-end verify incoming value).  the drawback approach is less-formal mechanism requires process around regularly rotating secret value.
  3. on api -> security tab, configure proxy authentication "mutual certificates", , specify client certificate in dropdown.  the drawback approach managing cert itself.

"basic authentication" can't used in scenario because of conflicting "authorization" request header (i.e., both basic authentication , oauth 2.0 make use of "authorization" request header there'd no way support both values).  in apim, on api -> security tab if specify proxy authentication = "basic authentication" when api configured use oauth 2.0 receive following error message when saving:

"disable authorization request header token sending method first"

it seems me option 3 ideal.  using mutual certificates secures communication between proxy , back-end service, , works both standard , developer tiers it's inexpensive while in development.  once in production, can combined ip white-listing if desired.

any guidance or suggestions appreciated.

thanks!

ben,

in situation, agree mutual authentication might best choice.

regards,

miao



Microsoft Azure  >  Azure API Management



Comments

Popular posts from this blog

Azure DocumentDB Owner resource does not exist

job syspolicy_purge_history job fail in sqlserver 2008

Trying to register with public marketplace error with 'Get-AzureStackStampInformation'