Ошибка сервера 401: что это за ошибка и как ее исправить
Появление сообщения об ошибке 401 Unauthorized Error («отказ в доступе») при открытии страницы сайта означает неверную авторизацию или аутентификацию пользователя на стороне сервера при обращении к определенному url-адресу. Чаще всего она возникает при ошибочном вводе имени и/или пароля посетителем ресурса при входе в свой аккаунт. Другой причиной являются неправильные настройки, допущенные при администрировании web-ресурса. Данная ошибка отображается в браузере в виде отдельной страницы с соответствующим описанием. Некоторые разработчики интернет-ресурсов, в особенности крупных порталов, вводят собственную дополнительную кодировку данного сбоя:
Попробуем разобраться с наиболее распространенными причинами возникновения данной ошибки кода HTTP-соединения и обсудим способы их решения.
Причины появления ошибки сервера 401 и способы ее устранения на стороне пользователя
При доступе к некоторым сайтам (или отдельным страницам этих сайтов), посетитель должен пройти определенные этапы получения прав:
Большинство пользователей сохраняют свои данные по умолчанию в истории браузеров, что позволяет быстро идентифицироваться на наиболее часто посещаемых страницах и синхронизировать настройки между устройствами. Данный способ удобен для серфинга в интернете, но может привести к проблемам с безопасностью доступа к конфиденциальной информации. При наличии большого количества авторизованных регистрационных данных к различным сайтам используйте надежный мастер-пароль, который закрывает доступ к сохраненной в браузере информации.
Наиболее распространенной причиной появления ошибки с кодом 401 для рядового пользователя является ввод неверных данных при посещении определенного ресурса. В этом и других случаях нужно попробовать сделать следующее:
Некоторые крупные интернет-ресурсы с большим количеством подписчиков используют дополнительные настройки для обеспечения безопасности доступа. К примеру, ваш аккаунт может быть заблокирован при многократных попытках неудачной авторизации. Слишком частые попытки законнектиться могут быть восприняты как действия бота. В этом случае вы увидите соответствующее сообщение, но можете быть просто переадресованы на страницу с кодом 401. Свяжитесь с администратором сайта и решите проблему.
Иногда простая перезагрузка проблемной страницы, выход из текущей сессии или использование другого веб-браузера полностью решают проблему с 401 ошибкой авторизации.
Устранение ошибки 401 администратором веб-ресурса
Для владельцев сайтов, столкнувшихся с появлением ошибки отказа доступа 401, решить ее порою намного сложнее, чем обычному посетителю ресурса. Есть несколько рекомендаций, которые помогут в этом:
Где в поле /oldpage.html прописывается адрес проблемной страницы, а в http://site.com/newpage.html адрес страницы авторизации.
Таким образом вы перенаправите пользователей со всех страниц, которые выдают ошибку 401, на страницу начальной авторизации.
Хотя ошибка 401 и является проблемой на стороне клиента, ошибка пользователя на стороне сервера может привести к ложному требованию входа в систему. К примеру, сетевой администратор разрешит аутентификацию входа в систему всем пользователям, даже если это не требуется. В таком случае сообщение о несанкционированном доступе будет отображаться для всех, кто посещает сайт. Баг устраняется внесением соответствующих изменений в настройки.
Дополнительная информация об ошибке с кодом 401
Веб-серверы под управлением Microsoft IIS могут предоставить дополнительные данные об ошибке 401 Unauthorized в виде второго ряда цифр:
Более подробную информацию об ошибке сервера 401 при использовании обычной проверки подлинности для подключения к веб-узлу, который размещен в службе MS IIS, смотрите здесь.
Следующие сообщения также являются ошибками на стороне клиента и относятся к 401 ошибке:
Как видим, появление ошибки авторизации 401 Unauthorized не является критичным для рядового посетителя сайта и чаще всего устраняется самыми простыми способами. В более сложной ситуации оказываются администраторы и владельцы интернет-ресурсов, но и они в 100% случаев разберутся с данным багом путем изменения настроек или корректировки html-кода с привлечением разработчика сайта.
Типичные ошибки почтовых сервисов
Если письмо не было доставлено получателю, то ему будет присвоен один из следующих статусов:
Пример возвращенной ошибки. В деталях ошибки видим, что почтовый ящик пользователя был переполнен.
Пример возвращенной ошибки. В деталях ошибки видим, что почтовый ящик пользователя был переполнен.
В данной статье будут представлены примеры текстов ошибок, которые могут быть возвращены почтовым сервером, а также их расшифровка.
Все ошибки в статье разделены по следующим категориям:
Почтовый адрес пользователя указан неверно. Письмо не может быть доставлено на несуществующий адрес:
Некоторые сервисы блокируют почтовые ящики после определённого периода неиспользования. Если попытаться отправить письмо на такой почтовый адрес, то нам вернутся следующие ошибки:
Ошибки при переполнении почтового ящика пользователя:
Чаще всего это происходит потому, что получатель редко пользуется ящиком и ящик заполняется рассылками. Попробуйте связаться с получателем альтернативным способом связи и сообщить о проблеме.
Если сообщение отклонено спам-фильтром почтового сервиса, то в письме возвращаются следующие ошибки:
В зависимости от того, на каком почтовом сервисе ваша рассылка попала в спам, вы можете воспользоваться одной из наших инструкций по выходу из спама:
Ошибки грейлистинга (серые списки):
Серые списки — это способ автоматической блокировки спама. Принцип работы данного способа заключается в следующем: если почтовому сервису кажется подозрительным принимаемое им письмо, то он может не принять его и попросить переотправить сообщение позже. При этом нам могут вернуться следующие ошибки:
Платформа GetCourse распознает подобный запрос и автоматически переотправляет письмо позже. Спамерское программное обеспечение в таких случаях, обычно, не пытается этого делать, и их сообщения не доходят.
Ошибки, связанные с неправильной настройкой почты
Если при настройке домена, с которого производится отправка писем, были допущены ошибки, то письма могут возвращаться со следующими ошибками:
Обычно такая ошибка возвращается почтовым сервисом Gmail или Mail.ru.
При появлении данной ошибки необходимо проверить корректность SPF, DKIM и MX в DNS-зоне домена, с которого осуществляется отправка рассылок.
При появлении данной ошибки необходимо проверить правильность SPF и DKIM в DNS-зоне домена, с которого происходит отправка почты.
Ошибка в SPF-записи домена, с которого происходит отправка письма. Возможно, SPF-запись была указана неверно или присутствует несколько SPF-записей.
The [Authorize] always caused «Authorization has been denied for this request» #13
Comments
Copy link Quote reply
biapar commented Jun 13, 2017 •
I’m able to login and receive token.
So I create a class like your webapi example, but with Authorize decoration, I’ve always the error «Authorization has been denied». If I remove the [Authorize], I’m able to call the webapi.
Why?
mattbrailsford commented Jun 13, 2017
Since you have declared a realm in the OAuth attribute, have you also declared the same realm in your OAuth configuration in the application event handler?
biapar commented Jun 13, 2017 •
Yes. I had.
This is the configuration:
mattbrailsford commented Jun 13, 2017
Ok, can you inspect the body of the request to see if there is a payload. If it’s coming from AuthU, it should give you a message stating exactly what is causing it.
biapar commented Jun 13, 2017 •
mattbrailsford commented Jun 13, 2017
Hmm, that doesn’t look to be one of our error messages so must be coming from some place else?
biapar commented Jun 13, 2017
So the denied authorization is caused by UmbracoApiController. Do you agree?
mattbrailsford commented Jun 13, 2017
Hmm, possibly. Have you put the token paths in the umbraco reserved paths app setting?
biapar commented Jun 13, 2017 •
I’ve Umbraco Identity installed but not Google&Co activacted. I need it because I wish to login with Active Directory.
mattbrailsford commented Jun 13, 2017
Have you tried debugging into the OAuthAttribute to see if that gets hit?
biapar commented Jun 13, 2017
OAuthAttribute is not called. I putted breaks into it.
mattbrailsford commented Jun 13, 2017
And you are sure that’s the right one? there are two attributes. One for web API one for normal mvc controllers.
biapar commented Jun 13, 2017
I try with also with Umbraco.Web.WebApi.UmbracoAuthorize
biapar commented Jun 13, 2017
biapar commented Jun 14, 2017
I found that username is null here:
mattbrailsford commented Jun 14, 2017 •
Interesting. Have you tried decoding your JWT access token to see what it actually contains? You can do that here https://jwt.io/
biapar commented Jun 15, 2017 •
biapar commented Jun 15, 2017
the code is not able to decode the token. See here:
biapar commented Jun 15, 2017
The claims list is empty
mattbrailsford commented Jun 15, 2017
That fact that jwt.io reported invalid signature is not a problem, it’s just it doesn’t know the server signing key so it can’t validate that, but it still shows you the payload.
Looking at your payload though it doesn’t look quite right. This JWT token came from the OAuth endpoint right? And are you using the out of the box user service? I’m not quite sure why some keys are missing. What version of umbraco are you using?
mattbrailsford commented Jun 15, 2017
It could be worth debugging into the user service when the jwt token is being created as it looks like some things are not getting into the token.
biapar commented Jun 15, 2017
I use Umbraco 7.5.13.
The JWT token come from your OAuth endpoint and I use Umbraco Identity manager.
Which other debug can I
using UmbracoIdentity.Models;
using Umbraco.Core.Security;
using Umbraco.Core.Models.Identity;
using Umbraco.IdentityExtensions;
using Microsoft.Owin.Cors;
using System.Web.Cors;
using LGISuppliersWFBusiness.Common;
[assembly: OwinStartup(«UmbracoIdentityStartup», typeof(UmbracoIdentityStartup))]
mattbrailsford commented Jun 15, 2017
Hmmm, there isn’t actually a need to install the UmbracoIdentity package so I wonder if that is actually messing it up. AuthU should be working directly with the Users membership provider.
biapar commented Jun 15, 2017 •
I update to U7.6.3 and disabled Identity.
Now, the url http://localhost:60936/oauth/tokenusers is no longer available. I see that the normal Umbraco Backoffice Login search the realm endpoint? Why?
biapar commented Jun 15, 2017 •
I solved as I described here and found why not login:
IDX10223: Lifetime validation failed. The token is expired.
ValidTo: ’06/15/2017 08:12:01′
Current time: ’06/16/2017 10:42:24′.