Авторизация жана жетүү контролу (RBAC)
Аутентификацияланган колдонуучуга эмне кылууга уруксат экенин чечебиз
- аутентификация менен авторизациянын айырмасын так айтууну;
- жетүүнү ролдор жана майдараак уруксаттар аркылуу моделдөөнү;
- Express маршруттарын кайра колдонулуучу авторизация middleware менен коргоону;
- колдонуучулар өз ресурстарын гана тийгидей ээлик кылуу текшерүүсүн камсыздоону;
- сессия/cookie жана токен негизиндеги жетүүнүн ортосунда тандоону жана алардын алмашууларын түшүнүүнү.
1. Аутентификация жана авторизация
Бул эки сөз дайыма чаташтырылат, анткени алар суроо-конвейеринде катар турат, бирок ар башка суроолорго жооп берет:
- Аутентификация (authN) -- сиз кимсиз? Колдонуучу инсандыгын, көбүнчө сырсөз менен, ырастап, сессия же JWT алат. Мурунку тема, JWT менен аутентификация, толугу менен ушул кадамга арналган.
- Авторизация (authZ) -- сизге эмне кылууга уруксат? Инсандык белгилүү болгондо, сервер ушул суроого уруксат берилеби деп чечет.
Пайдалуу модель: аутентификация сессияга бир жолу болот (кирүүдө), ал эми авторизация ар бир корголгон суроодо болот. Жарактуу токен -- бул аны кармаган адамдын ким экенин далилдеген билет; бул ар бир бөлмөгө кире турган артындагы уруксат эмес. Ар бир эшикте контролёр билетиңиз ушул жерге кирүүгө уруксат берерин дагы деле текшерет.
Салыштыруу. Мейманканы элестетиңиз. Кабыл алуу үстөлү сизди аутентификациялайт: брониңизди ырастап, ачкыч-карта берет. Бул карта бардык эшиктерди ачпайт. Аны 412-номерге тийгизгениңизде, кулпу сизди авторизациялайт -- бул так картага так ушул эшиктен өтүүгө уруксат берилерин текшерет. Спортзал жана бассейн баары үчүн ачылышы мүмкүн; кызматтык коридор жабык бойдон калат. Бир карта, ар бир эшикте ар башка чечимдер.
Бөлүнүү эмне үчүн маанилүү. Экөөнү чаташтыруу классикалык осолдукту жаратат: маршрут токендин жарактуу экенин текшерип, ошону менен токтойт, жарактуу колдонуучу уруксат берилген колдонуучу деп ойлоп. Бул бузулган жетүү контролу -- көп жылдар бою OWASP Top Ten тизмесинде биринчи орунда. Инсандыкты текшерүү жана уруксатты текшерүү -- бул эки өзүнчө тоскоол, экөө тең жабылышы керек.