Я пытаюсь аутентифицировать веб-приложение ASP.NET Core с Sonos, используя OAuth 2.0.
Проблема заключается в том, что ему требуется заголовок запроса авторизации при попытке доступа к токену с использованием кода доступа, полученного с помощьюсистема Sonos OAuth 2.
Но ASP.NET Core, по-видимому, разрешает данные авторизации только в пределах URL, а не в заголовках запроса.Когда я пытаюсь это сделать, я получаю сообщение об ошибке, в котором говорится, что в нем отсутствует заголовок авторизации.
Missing request header 'Authorization' for method parameter of type String
Это происходит после аутентификации с помощью Sonos.
У меня вопрос: как использовать базовую авторизацию?Заголовки как данные авторизации вместо данных авторизации в URL запроса?
Я уже пробовал использовать этот проект github: https://github.com/blowdart/idunno.Authentication/tree/master/src/idunno.Authentication.Basic
Но он не работает длячего я пытаюсь достичь.
Я получил фактический токен для работы с Почтальоном, в Почтальоне я могу выбрать Клиентскую аутентификацию.Когда я выбираю «Отправить как базовый заголовок проверки подлинности», все работает совершенно нормально, но когда я выбираю «Отправить учетные данные клиента в теле», это вызывает ошибку, упомянутую выше.
Некоторые снимки экрана рабочего метода в Postman:
![Screenshot of token request modal in Postman](https://i.stack.imgur.com/oARCP.png)
Фрагмент кода, который работает некорректно и вызывает указанную выше ошибку:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = "Sonos";
})
.AddOAuth("Sonos", options =>
{
options.ClientId = "client token generated by sonos application";
options.ClientSecret = "client secret generated by sonos application";
options.CallbackPath = new PathString("/signin-sonos");
options.AuthorizationEndpoint = "https://api.sonos.com/login/v3/oauth";
options.TokenEndpoint = "https://api.sonos.com/login/v3/oauth/access";
});
I 'Я ожидаю, что последний токен доступа, полученный авторизацией OAuth, будет где-то сохранен. Я могу получить к нему доступ и повторно использовать его для управления моими динамиками Sonos с помощью Sonos API.
Если вы хотите воспроизвести эту ошибку, вы можете создатьприложение / интеграция на сайте Sonos: https://integration.sonos.com/integrations