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

BizTalk Server 2013 Azure VM Log Shipping and HA for hosts

How to send non-standard Content-Type header ?