2017-05-22 2 views
1

Ich habe eine Back-End-API, die ich mithilfe der Azure-API-Verwaltung proxyieren möchte. Diese Backend-API erfordert, dass ich ein Bearer Oauth2-Token zur Verfügung stelle. Ich möchte Azure APIM verwenden, um die Oauth2-Flüsse für mich zu behandeln, und ich möchte eine sehr einfache API verfügbar machen, die von Client-Anwendungen verbraucht wird. Ich möchte vermeiden, dass meine Client-App Oauth2 verwendet. Wie kann ich mit APIM umgehen? Ich habe viele Beispiele gefunden, die demonstrieren, wie man eine Backend-API mit Oauth2 schützt, aber es ist nicht der Anwendungsfall, den ich implementieren möchte. Danke.Azure-API-Verwaltung: Oauth2 mit Back-End-API

Antwort

0

Was Sie tun müssen, ist eine Kopfzeile zu Anfrage hinzufügen - set-Header-Richtlinie verwenden, um Authorization-Header auf einen gewünschten Wert setzen. Das funktioniert gut, wenn Sie das Token in der Richtlinie fest codieren können.

Wenn Sie nicht können - das müssen Sie OAuth-Fluss innerhalb der Richtlinie mit Send-Anfrage organisieren. Kurz gesagt, senden Sie Ihre App-ID und Ihr Geheimnis an den OAuth-Endpunkt und analysieren ihre Antwort, um das Token zu erhalten und es an die Anfrage anzuhängen.

1

Hier ist eine Politik Schnipsel diese Arbeit zu machen:

<send-request ignore-error="true" timeout="20" response-variable-name="bearerToken" mode="new"> 
     <set-url>{{authorizationServer}}</set-url> 
     <set-method>POST</set-method> 
     <set-header name="Content-Type" exists-action="override"> 
      <value>application/x-www-form-urlencoded</value> 
     </set-header> 
     <set-body> 
      @{ 
       return "client_id={{clientId}}&resource={{scope}}&client_secret={{clientSecret}}&grant_type=client_credentials"; 
      } 
     </set-body> 
    </send-request> 

    <set-header name="Authorization" exists-action="override"> 
     <value> 
      @("Bearer " + (String)((IResponse)context.Variables["bearerToken"]).Body.As<JObject>()["access_token"]) 
     </value> 
    </set-header> 

    <!-- We do not want to expose our APIM subscription key to the backend API --> 
     <set-header exists-action="delete" name="Ocp-Apim-Subscription-Key"/> 

Von: https://github.com/orangetoken/api-management-policy-snippets/blob/master/Snippets/Add%20Azure%20AD%20OAuth2%20bearer%20token%20to%20request%20to%20AD%20protected%20API.xml

Und bald auf dem APIM Politik Schnipsel Zweig vom APIM Team