«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;
Но на самом деле это не говорит мне, почему я получаю отказ.