---
title: Авторизация
date: 2007-03-03T15:22
tags: [tech]
---

[Авторизация](http://en.wikipedia.org/wiki/Authorization) это процесс предоставления привилегий или запретов, т.е. связывание пользователя со списком того что ему делать можно в системе или что ему делать нельзя.

Зачем это надо? Система как цивилизация - чем дальше она развивается, тем сложнее становятся отношения между пользователями и настаёт момент, когда необходимо

- Разделение труда. Типичный пример - системы типа intranet, куда имеют доступ только работники компании, соответсвенно никто ничего там испортить не может, однако ввод данных осуществляется разными людьми и им просто нет нужды видеть чужие интерфейсы работы с системой.
- Разделение аудитории. Пример - финансовые системы, сайты с разделением на admin-public, т.е. системы где большая вероятность вандализма простыми пользователями

В простых Web-инфосистемах авторизация для упрощения может быть забита сразу в коде. Никто кроме Васи Пупкина не может зайти в админпанель - делать проще простого. Но не стоит путать админпанель доступную всем но не знающим как в неё зайти от админпанели защищённой [авторизацией](http://en.wikipedia.org/wiki/Authentication) .

<!-- truncate -->

### Архитектура

В более сложных системах систему прав приходится реализовывать более хитрыми путями. Прежде всего надо решить какой список мы делаем. Что сделать проще - список запретов или список разрешённых действий? Кому-то ведь прийдётся выставлять привилегии.  
  
Архитектура инфосистемы должна быть построена удобным образом, что-бы можно было детально составить список привилегий. Как пример:

- Комментировать статью Y может видеть только пользователь **группы** A
- Видеть раздел **меню X** может видеть только пользователь **группы** B
- Удалить новость может только пользователь **группы** C

Кроме того, заметьте - видеть кнопку "удалить" и реальная функциональность удаления какого-то элемента системы это разные вещи. Возможна халатность разработчика, где функциональность всё ещё присутсвует, даже если пользователь её не видит.

## Related

- [20 типичных уязвимостей в коде](/ru/blog/tech/security/20-tipichnyh-uyazvimostey-v-kode/)
- [Alter sequence](/ru/blog/tech/backend/DB/postgres/alter-sequence/)
- [Backend-авторизация в facebook через OAuth 2.0](/ru/blog/tech/integration/backend-avtorizatsiya-v-facebook-cherez-oauth-20/)
