Я написал ниже кусок 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 (