-web-api — В авторизации для этого запроса отказано —

«microsoft.rest.azure.cloudexception», причина: «microsoft.rest.azure.cloudexception: для этого запроса было отказано в авторизации. — reddeveloper

C# — «сообщение»: «в этом запросе отказано в авторизации». owin промежуточное по —

Вероятно, это проблема с разрешенной аудиторией. Вот

 app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions { ... AllowedAudiences = new[] { "*" }, ... }

Вы устанавливаете разрешенную аудиторию. Жетон aud будет проверен по списку AllowedAudiences. Но вы никогда не добавляете аудиторию к токену.

В нашем проекте я использовал CustomJwtFormat на основе кода, показанного в http://bitoftech.net/2022/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization- сервер /

Токен будет сгенерирован с вызовом

var token = new JwtSecurityToken(_issuer, audienceId, data.Identity.Claims, issued.Value.UtcDateTime, expires.Value.UtcDateTime, signingKey);

Второй параметр отвечает за утверждение aud в JWT:

Из https://msdn.microsoft.com/ ru-ru / library / dn451037 (v = vs.114) .aspx:

Тип аудитории: System.String

Если это значение не равно NULL, будет добавлено утверждение {aud, ‘аудитория’}.

После установки заявки aud в токене авторизация должна работать нормально.

C# — identityserver3 .net web api. ошибка получения — для этого запроса отказано в авторизации. —

Я пытаюсь настроить аутентификацию для своего .net webapi с помощью identityserver3.

Это мой код в Owin. Запуск проекта сервера аутентификации

public class Startup
{ public void Configuration(IAppBuilder app) { // hardcoded list of clients, scopes and users var factory = new IdentityServerServiceFactory() .UseInMemoryClients(clients) .UseInMemoryScopes(scopes) .UseInMemoryUsers(users); app.UseIdentityServer(new IdentityServerOptions { SigningCertificate = new X509Certificate2($@"{AppDomain.CurrentDomain.BaseDirectory}binmy_selfsigned_cert.pfx", ConfigurationManager.AppSettings["certificatekey"]), RequireSsl = false, Factory = factory }); }

А ниже приведен код моего запуска веб-API owin.

public class Startup
{ public void Configuration(IAppBuilder app) { app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions { Authority = "http://localhost:45230" }); app.UseWebApi(GlobalConfiguration.Configuration); }
}

Мой сервер авторизации работает, когда я пытаюсь войти на страницу входа на серверы идентификации. Я также могу получить токен авторизации, отправив сообщение на /connect/token Однако, когда я использую полученный таким образом токен-носитель для вызова моего метода webapi ниже, он всегда выдает ошибку «{» Сообщение «:» Авторизация была отклонена для этого запроса «}.

Api —

[HttpGet] [Authorize] public IEnumerable<Customer> Get() { var customerRepository = new CustomerRepository(); return customerRepository.GetCustomers(); }

Может кто-нибудь предложить, что мне не хватает?

-web-api — в авторизации для этого запроса отказано —

Я создал веб-api с базовым OAuth и мобильное приложение, использующее ajax для доступа к api. Я установил AccessTokenExpireTimeSpan равным 1 дню, как показано ниже.

static Startup()
{ PublicClientId = "self"; UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>()); OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString("/Token"), Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory), AuthorizeEndpointPath = new PathString("/api/UserAccount/ExternalLogin"), AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), AllowInsecureHttp = true };
}

На моем локальном компьютере все работает нормально, пока я не развернул его на сайте хостинга.

Мое приложение может войти в систему и получить новый токен, и с этим токеном приложение (каждые 2 секунды) может получить доступ к webapi в течение всего дня, пока токен не истечет. Но если я остановлю приложение (не останавливая приложение) от доступа к webapi на 5–6 минут, а затем запущу его снова, я получу «401 — авторизация была отклонена для этого запроса». и нужно запросить новый токен.

Теперь, поскольку он работает на моем ПК, есть ли что-то, что я пропустил, что могло вызвать отказ, например, сеанс, файлы cookie, настройки в хост-системе и т. Д.?

FYI Мой компьютер использует IIS7.5, а хост-система работает на PleskWin и использует IIS8.5

Для этого запроса отказано в авторизации — azure active directory — какие журналы доступны?

Поэтому я использую почтальон с процессом OAuth 2.0, чтобы попытаться аутентифицироваться в моем WebApi через Azure Active Directory. Я все еще работаю в проекте по умолчанию с базовым ValuesController, просто пытаюсь заставить работать аутентификацию и авторизацию.

Я следил за этим видео, чтобы настроить почтальон, и, насколько я могу судить, я настроил новые приложения в активном каталоге, как описано.

Обмен токенов работает. И носитель авторизации {токен} отправляется правильно. Вот пример токена:

{Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlliUkFRUlljRV9tb3RXVkpLSHJ3TEJiZF85cyIsImtpZCI6IlliUkFRUlljRV85..NXpvslBXOpRNkmWQqj7XqVzloS3KoeSqPIlo-yUPGYkZ4bHPrAH6yD4sxMYz-19VIPFRDUMP-5h5hmaMKmuykjNUltz6wejQT9f4IeV6i7VtP3BlkfASZeAdKAiSjKh6ydV8PuJjV2HHh2WvxIKC3QQXzROwWAdeXLcgMTiKSBMULzFV8BsecgtI86_L2OISgbQZ2LgF137EPJoG7C4L1IO-10T1QIVl-Emy6AS0VKVxdzjCgiT-DFtccxME6n1CruoDy6mTKztcAkiFR1IlgY6Fvj-Y_goMQyxA5sCRebWnOQ5jeUKv4KNyNWOLJU_RiZYe0kj4IT3KDc9jjtHykg}

Однако, несмотря на то, что я успешно получаю токен, и когда я прохожу через отладчик в VS, я вижу, что токен поступает, авторизация не выполняется. Получаю такой ответ:

{"Message":"Authorization has been denied for this request."}

Проблема, похоже, на стороне сервера. Когда я переопределяю IsAuthorized, чтобы вернуть true, он работает.

В Azure оба приложения находятся в одном каталоге с разрешениями делегата.

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

Я включил трассировку:

// Web API configuration and services
var traceWriter = config.EnableSystemDiagnosticsTracing();
traceWriter.IsVerbose = true;
traceWriter.MinimumLevel = TraceLevel.Debug;

Но на самом деле это не говорит мне, почему я получаю отказ.

Похожее:  не удалось соединиться с Bgpbagent белгазпромбанк что делать