Как проанализировать значения заголовка в политике APIM и передать его бэкэнд-API? - Ошибка - ввод не является допустимой строкой Base-64 - PullRequest
0 голосов
/ 30 марта 2020

Я написал ниже кусок Policy для анализа токена из входящего запроса.

<policies>
 <inbound>
   <set-header name="x-request-context-data" exists-action="override">
        <value>@{
            string[] value;
            if (context.Request.Headers.TryGetValue("Authorization", out value))
            {
                if(value != null && value.Length > 0)
                {
                    return Encoding.UTF8.GetString(Convert.FromBase64String(value[0]));
                }
            }
            return null;
        }</value>
    </set-header>
      <base />
    <set-backend-service id="apim-generated-policy" backend-id="backend-function" />
    </inbound>
    <backend>
      <base />
     </backend>
     <outbound>
     <base />
     </outbound>
     <on-error>
       <base />
     </on-error>
  </policies>

Токен генерируется Azure AD.

   private static IPublicClientApplication _app;
   private static string ClientId = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx";
   private static string Tenant = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx";

   static string[] scopes = new string[]
        {"user.read", "api://xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/clientpoc"};

   var auth = _app.AcquireTokenWithDeviceCode(scopes,
                                        deviceCodeResultCallback =>
                                        { 
                                            return Task.FromResult(0);
                                        })
                                    .ExecuteAsync().Result;

    Console.WriteLine("Token: " + auth.AccessToken);

Я инициирую запрос, передавая token с помощью почтальона

Я получаю сообщение об ошибке, как показано ниже в почтальоне

Ошибка оценки выражения. Входные данные не являются допустимой строкой Base-64, поскольку они содержат неосновной 64-символ, более двух символов заполнения или недопустимый символ среди символов заполнения. в System.Convert.FromBase64_Decode (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...