3

Я создаю приложение с одностраничным интерфейсом MVC4 и WebAPI на другом компьютере, которое возвращает данные запроса json непосредственно в браузер. Аутентификация происходит на стороне MVC, где создается пользовательский объект, который определяет набор разрешений «canDoX» для текущего пользователя.Как защитить WebAPI с одной страницей

Проблема заключается в том, как защитить доступ к действиям WebAPI на основе этих разрешений без повторной аутентификации и авторизации пользователя заново, когда он получает запрос со страницы .js.

Как можно заметить, пользователь должен знать о апи, но если бы они сделали, они могли взломать URL и запрос любые данные, которые они хотят от '/api/myController/myRestrictedAction/123'

Любые идеи? Должен ли я отказаться от одностраничной идеи и просто вызвать webAPI с контроллера MVC?

ответ

3

HTTP не имеет гражданства. Вы должны выполнять авторизацию и аутентификацию по каждому запросу, и это часто случается много раз на странице для доступа к различным ресурсам на этой странице.

В вашем примере '/api/myController/myRestrictedAction/123' - это ресурс, который вы подвергаете кому-то. Независимо от того, должен ли пользователь, обращающийся к этому ресурсу, иметь доступ к нему, зависит от вас.

Вместо того чтобы думать о том, что пользователь получает доступ к случайным конечным точкам как «взломать URL», это действительно ошибка в вашем приложении, которая позволяет пользователю запрашивать и получать доступ к тому, к чему он не может получить доступ.