У меня есть приложение mvc 5 с веб-api 2. (.NET 4.6) Я реализовал конфигурацию oauth2 рядом с аутентификацией для моего приложения mvc (app.UseCookieAuthentication):
OAuthAuthorizationServerOptions OAuthServerOptions = new
OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/oauth/token"),
Provider = new AspNetIdentityOAuthAuthorizationServerProvider(),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(1000),
};
app.UseOAuthBearerTokens(OAuthServerOptions);
Мои API защищены атрибутом авторизации (глобальный фильтр).
Я использую предоставление учетных данных клиента
Я читал эти две статьи (они одинаковые) https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/individual-accounts-in-web-apihttps://mitchelsellers.com/blogs/2017/05/10/adding-webapi-oauth-authentication-to-an-existing-project
Я могу получить токен для своего пользователя, но когда я хочу использовать токен для доступа к моему Api, я получаю 403 запрещенную ошибку
HttpClient client = new HttpClient();
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("grant_type", "client_credentials");
parameters.Add("client_id", "4rclFahG7gho8erzbsmTbw= = ");
parameters.Add("client_secret", "IBSqiYb0kT/lzV0gpQsPxkUDI9ztu0dhHWDe4VQDzKGYm2pl+75sMVfEsoGo4FAxFm0qZUFcDrVMrfqYhn2bzw= = ");
var content = new FormUrlEncodedContent(parameters);
try
{
HttpResponseMessage result = client.PostAsync("http://localhost:49594/oauth/token", content).Result;
string jsonResult = result.Content.ReadAsStringAsync().Result;
var resultObject = JsonConvert.DeserializeObject<TokenResult>(jsonResult);
var accessToken = resultObject.access_token;
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
result = client.GetAsync("http://localhost:49594/api/v1/echo?id=myt
estvalue").Result;
// RESULT is 403 - Forbidden
Я тоже тестировал с почтальоном, и результат тот же.
кто-нибудь испытывал ту же проблему?
ты знаешь, что мне не хватает?
Обновлять : Он работает, если я развертываю свое приложение на сервере (службы приложений Azure), но все еще не на моем компьютере





Я нашел причину своей проблемы!
Я использую каскадер (https://rimdev.io/stuntman/) для своего разработчика, и я забыл настроить его для oauth ...
Эта строка отсутствовала:
StuntmanOptions.AllowBearerTokenPassthrough = true;