У меня есть служба webapi в/под DNN V7 (IIS/10 на Win10 Dev). Он работает нормально, но у меня есть один сценарий, в котором я хотел проверить ответ, который я получаю, с ожидаемыми базовыми ответами аутентификации, поскольку я, похоже, не могу найти этот ответ в другом месте.
Метод контроллера помечен этими атрибутами (что проверяется с использованием базовой аутентификации)
<HttpGet>
<DnnAuthorize(StaticRoles:="TestRole")>
Предоставление действительных учетных данных пользователя в основном заголовке аутентификации для пользователя с этой ролью возвращает 200 ok. пока все хорошо.
Вообще не предоставляя базовый заголовок аутентификации, возвращает 401 неавторизованный, все хорошо и ожидаемо.
однако, предоставляя базовый заголовок аутентификации, например, с неправильным паролем или именем пользователя, возвращает 500 внутренних ошибок сервера.
Итак, верна ли ошибка 500, если пользователь/пароль предоставлен, НО неправильный? В моей голове я должен получить 401 неавторизованный, поскольку у него есть учетные данные для проверки, они просто были неверными. Так что я бы не ожидал, что он взорвется с исключением, просто вернитесь без разрешения?
стек вызовов не очень показательный
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.Http.WebHost.HttpControllerHandler.EndProcessRequest(IAsyncResult result) +113
System.Web.Http.WebHost.HttpControllerHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +10
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9836613
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +50
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +163
Возвращает ли базовая аутентификация (или реализация DotNetNuke атрибута DnnAuthorize) ошибку 500 намеренно в целях безопасности? Я неправильно настроил или настроил контроллер API? в основном, что мне здесь не хватает?