Проблемы с обменом кодом OAuth API инструментов для веб-мастеров Bing, изменения?

Это часть настольного приложения.

На основе https://docs.microsoft.com/en-us/bingwebmaster/oauth2

Следующий код для обмена кодом авторизации на токены доступа и обновления работал несколько месяцев назад...

      try
{
    HttpWebRequest req = WebRequest.CreateHttp("https://www.bing.com/webmasters/oauth/token");
    req.Method = WebRequestMethods.Http.Post;
    req.ContentType = "application/x-www-form-urlencoded";

    StringBuilder content = new StringBuilder();
    content.AppendFormat("code={0}&", Uri.EscapeDataString(code));
    content.AppendFormat("client_id={0}&", Uri.EscapeDataString(clientId));
    content.AppendFormat("client_secret={0}&", Uri.EscapeDataString(clientSecret));
    content.AppendFormat("redirect_uri={0}&", Uri.EscapeDataString(redirectUri));
    content.AppendFormat("grant_type={0}", Uri.EscapeDataString("authorization_code"));

    var data = Encoding.ASCII.GetBytes(content.ToString());

    using (var stream = await req.GetRequestStreamAsync())
    {
        await stream.WriteAsync(data, 0, data.Length);
    }

    string json;
    using (var res = await req.GetResponseAsync())
    {
        using (var stream = res.GetResponseStream())
        using (var sr = new StreamReader(stream))
        {
            json = await sr.ReadToEndAsync();
        }
    }

    if (!string.IsNullOrWhiteSpace(json))
    {
        tokenResponse = JsonConvert.DeserializeObject<TokenResponse>(json);
    }
}
catch (WebException wex)
{
    using (var stream = wex.Response.GetResponseStream())
    using (var sr = new StreamReader(stream))
    {
        var t = await sr.ReadToEndAsync();
    }
}
catch (Exception ex)
{

}

Однако, теперь возвращается

400 Bad Request, заголовки запроса Origin и Referer отсутствуют/пусты

я пытался добавить а потом возвращается

400 Неверный запрос, не удалось извлечь ожидаемый токен защиты от подделки

Я пытался передать случайный в конечную точку авторизации и получил то же самое в обратном вызове. Я как включил его, так и исключил из обмена токенами без каких-либо изменений в приведенных выше результатах.

Я не эксперт по OAuth, но я сделал несколько интеграций и раньше такого не видел.

Пользователь предоставляет авторизацию через окно с элементом управления WebView2, который возвращает код. Эта часть все еще работает хорошо. Я быстро покопался в ответе, чтобы посмотреть, не возвращается ли с сервера что-либо, связанное с защитой от подделки/CSRF, но я ничего не заметил. И в любом случае документация не изменилась в отношении того, что необходимо для запроса токенов, поэтому на данный момент все в основном методом проб и ошибок.

Итак, мой вопрос: если вы видели эту проблему реферера / защиты от подделки в любой реализации OAuth, как вы ее исправили или обошли? Или, если вы используете API-интерфейс инструментов Bing для веб-мастеров (настраиваемый или иной), работает ли он по-прежнему?

Кроме того, я открыт для идей и ценю ваше время.

0 ответов

Другие вопросы по тегам