2017-05-22 11 views
1

私はバックエンドAPIを持っています。Azure API Managementを使用してプロキシしたいです。 このバックエンドAPIを使用するには、ベアラOauth2トークンを提供する必要があります。 Azure APIMを使用して私のOauth2フローを処理したいと思っています。クライアントアプリケーションで消費される非常にシンプルなAPIを公開したいと思います。クライアントのAppがOauth2を使用しないようにしたい。 APIMでどのように処理できますか? Oauth2でバックエンドAPIを保護する方法を示すサンプルが多数見つかりましたが、実装しようとしているユースケースではありません。おかげさまで Azure API Management:バックエンドAPIを使用したOauth2

答えて

0

あなたがしなければならないことは、要求使用ヘッダーポリシーを使用して、承認ヘッダーを希望の値に設定することです。あなたがポリシーのトークンをハードコーディングできるなら、それはうまくいくでしょう。

送信要求を使用してポリシー内でOAuthフローを整理する必要がある場合。要するに、あなたは、あなたにアプリケーションのIDと秘密をOAuthエンドポイントに送り、その応答を解析してトークンを取得し、それを要求に添付することです。ここで

1

は、この作品を作るための政策の抜粋です:

<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"/> 

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

からAPIMポリシースニペットの枝に

とすぐに

関連する問題