-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;

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector