метод для получения id_token из Azure запроса тела AD - PullRequest
0 голосов
/ 21 марта 2020

Я слежу за этим WebApp-WebAPI пример . Есть ли способ получить id_token после авторизации пользователя B2 C и получения id_token внутри тела? Я нахожусь в приложении Function V3.

Я получаю ответ авторизации для replyURL в приложении azure Function, но id_token приходит в теле, смешанном с кодом и данными состояния, и я не могу сломаться это или десериализовать до json:

public class Function1
{
    internal class AuthToken
        {
            [JsonProperty("id_token")]
            public string id_Token { get; set; }

            [JsonProperty("state")]
            public string StateToken { get; set; }

            [JsonProperty("code")]
            public string CodeToken { get; set; }
        }

    private readonly HttpClient httpClient = new HttpClient();
    [FunctionName("ReceiverAuth")]
    public static async Task<HttpStatusCode> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log)
    {
        //this works and shows id_token, state, code as text (also without the Encoding.UTF8 parameter)
        var requestBody = await new StreamReader(req.Body, Encoding.UTF8).ReadToEndAsync();

       //trying to separate the id_token data into json throws http500
        AuthToken authTok = JsonConvert.DeserializeObject<AuthToken>(requestBody);
        var idToken = authTok.id_Token;
}

Также попытался, но не изменил результат:

var decodedRequestBody = System.Net.WebUtility.HtmlDecode(requestBody);

На мой взгляд, тело Фиддлера кажется, что данные разбиты но я не могу отделить id_token по требованию. получил. Отображение заголовка запроса, веб-формы и ответа. enter image description here enter image description here

1 Ответ

1 голос
/ 22 марта 2020

Данные отправляются вам в виде данных формы , а не JSON.

Вам нужно использовать что-то вроде этого:

var idToken = req.Form["id_token"];

Или вы можете попробуйте FromForm вместо HttpRequest req:

[FromForm] AuthToken authTok

Если это не работает, проверьте следующее: Как анализировать данные формы, используя Azure Функции

...