ajaxform Π½Π΅ ΡΠΊΠ°Π·Π°Π½ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ action
ΠΠ° ΡΡΠ΅Π½ΠΈΠ΅ 6 ΠΌΠΈΠ½. ΠΡΠΎΡΠΌΠΎΡΡΠΎΠ² 3 ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ
ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ: 14 ΠΠΎΡΠ±ΡΡ 2019
AjaxForm ΡΡΠΎ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° FormIt, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ajax (ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ FormIt, Π½ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΡ). ΠΠ»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Ρ FormIt Π½Π° AjaxForm Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ Π²ΡΠ·ΠΎΠ²Π°
ΠΡΠ°ΠΏΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ajax ΡΠΎΡΠΌΡ Π½Π° ΡΠ°ΠΉΡΠ΅:
- Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ FormIt ΠΈ AjaxForm.
- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°Π½ΠΊ Ρ HTML ΡΠΎΡΠΌΠΎΠΉ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ.
- Π Π°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌ Π²ΡΠ·ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π΅.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ
Π AjaxForm Π΅ΡΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΡ ΠΎΠΊΠΎΠ½ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ frontend_js ΠΈ frontend_css.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° Π±Π΅Π· jGrowl, ΡΠΎ ΡΡΠ°ΡΠΈΡΠ½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΎΠΊΠ½Π΅ Ρ id massage
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ° AjaxForm
AjaxForm
CΠ½ΠΈΠΏΠΏΠ΅Ρ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π»ΡΠ±ΡΡ ΡΠΎΡΠΌ ΡΠ΅ΡΠ΅Π· ajax. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΡΡΡΠΈΡΠ°Π½ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ FormIt, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ.
- Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π½ΡΠΆΠ½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π΅: jQuery.Form ΠΈ jQuery.jGrowl.
- Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π² ΡΠ΅ΡΡΠΈΡ $scriptProperties ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ°.
- ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΠΎΡΠΌΡ, ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Ρ ΠΊΠ»Π°ΡΡ ajax_form ΠΈ ΡΠΊΡΡΡΡΠΉ input Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ $scriptProperties .
- ΠΠ΅ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΡΠΎΡΠΌΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ»Π°ΡΡ ΡΠ΅ΡΠ΅Π· ajax.
- ΠΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠ²Π΅Ρ ΠΎΡ Π½Π΅Π³ΠΎ.
- ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΏΠ΅Ρ Π΅, ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ°
ΠΠΌΡ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ | ΠΠ»Π΅ΠΉΡΡ ΠΎΠ»Π΄Π΅ΡΡ |
---|---|---|
&form | tpl.AjaxForm.example | ΠΠ±ΡΠ°Π·Π΅Ρ ΡΠ°Π½ΠΊΠ° Ρ ΡΠΎΡΠΌΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ. |
&snippet | FormIt | Π‘Π½ΠΈΠΏΠΏΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΡΠΌΡ. |
&frontend_css | [[+assetsUrl]]css/default.css | Π‘ΡΠΈΠ»ΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΡ ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ |
&frontend_js | [[+assetsUrl]]js/default.js | Javascript Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ ΡΠ΅ΡΠ΅Π· ajax |
&actionUrl | [[+assetsUrl]]action.php | ΠΠ΄ΡΠ΅Ρ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ° |
ΠΡΡ, ΡΡΠΎ Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ AjaxForm, Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π² Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ²ΠΎΠΈΠΌ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠΎΠΌ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ FormIt, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ (Ρ ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅). ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΎΠ½ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ JSON ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ:
- status β 1 ΠΈΠ»ΠΈ 0, ΡΠΎ Π΅ΡΡΡ ΡΡΠΏΠ΅Ρ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°.
- message β ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ°, Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π΅ΡΠ»ΠΈ status = 0.
- data β ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΏΠΎΠ»Π΅ΠΉ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΡ ΠΏΠΎΠ»Ρ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ β ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $AjaxForm Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ error ΠΈ success ΠΏΡΠΈ Π²ΡΠ΄Π°ΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°.
ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ°:
ΠΡΠΎΡ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ, ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠΌΠ΅Π½ΠΈ.
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΡΠΎΡΠΌΡ
Π‘Π΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ»Π΅ΠΉ, Π½Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ. ΠΡΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ CSS ΠΊΠ»Π°ΡΡ error , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅.
Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΡΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ javascript ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ afValidated β Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΠΈ ΡΠ°Π²Π½Π° false , ΡΠΎ ΡΠΎΡΠΌΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π°.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° javascript ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠΎΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π° Π½Π΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
Π‘ΠΎΠ±ΡΡΠΈΠ΅ af_complete
ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ af_complete, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ javascript.
ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ javascript ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΎΡΠ²Π΅ΡΠΎΠΌ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΅ΡΡΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΡΠΌΠ°.
redirect Π½Π° Π΄ΡΡΠ³ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΉΡΠ°, ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΡΠΌΡ?
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ id ΠΊ ΡΠΎΡΠΌΠ΅, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ ΠΈ Π·Π°ΡΠ΅ΠΌ Π² js ΡΠ°ΠΉΠ» ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π² ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½ Ρ ΡΠΎΡΠΌΠΎΠΉ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π·Π°ΠΊΡΡΡΠΈΡ body.
ΠΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ AjaxForm Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΎΡΠΌΡ ΠΈΠ»ΠΈ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΡΠ΅Π»Π΅ΠΉ:
ΠΡΠΎΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Β«ΠΏΡΠΈΠ»ΠΈΠΏΠ°ΡΡΠΈΠΉΒ» popup β Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΡ Π²ΡΡΡΠ½ΡΡ, Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΏΠΎΠΊΠ°Π·Π° ΡΠ΅ΡΡΡΠ·Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. Π’ΠΎ Π΅ΡΡΡ, ΠΏΡΠΎΡΡΠΎ Π²ΡΠ·Π²Π°Π² ΡΠ½ΠΈΠΏΠΏΠ΅Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ jQuery.jGrowl ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠΈΡΡΠ½ΡΠ΅ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π½Π° javascript.
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΏΡΠ°Π²ΠΊΠ° email ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ FormIt Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ:
ΠΡΠ»Π°Π΄ΠΊΠ°
ΠΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ Π»ΡΠ±ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΎΡΠΌΠ° Π±Π΅Π· AjaxForm. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ AjaxForm β ΡΠ½ΠΈΠΏΠΏΠ΅Ρ-ΠΎΠ±ΡΡΡΠΊΠ°, ΠΎΠ½ Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΈΡΡΠΌΠ° ΠΈ Π½Π΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΎΡΠΌΡ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π²Π°Ρ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ ΠΈΠ»ΠΈ FormIt.
Π’Π°ΠΊ ΠΆΠ΅ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ΄ΡΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ javascript. ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ 500 ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ register_globals Ρ Π²Π°ΡΠ΅Π³ΠΎ PHP β ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½.
ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΡ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΠ½Π° Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΠΉΡΠ°Ρ ΡΡΠ°Π·Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Ρ ΠΌΠ΅ΡΡΡ Π½Π°Π·Π°Π΄ (Π·Π°ΠΌΠ΅ΡΠΈΠ» ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Π»ΠΈΡΡ ΡΡΠΎ ΡΠΎΡΠΌΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ). ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΏΠΎΠΊΠ° ΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° 1 ΡΠ°ΠΉΡΠ΅. Π€ΠΎΡΠΌΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² Π₯ΡΠΎΠΌΠ΅, Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Please note that GitHub no longer supports your web browser.
We recommend upgrading to the latest Google Chrome or Firefox.Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
AjaxForm / core / components / ajaxform / lexicon / ru / default.inc.php
$_lang [ β ajaxform β ] = β AjaxForm β ; |
$_lang [ β af_message_close_all β ] = β Π·Π°ΠΊΡΡΡΡ Π²ΡΠ΅ β ; |
$_lang [ β af_submit β ] = β ΠΡΠΏΡΠ°Π²ΠΈΡΡ β ; |
$_lang [ β af_reset β ] = β ΠΡΠΈΡΡΠΈΡΡ β ; |
$_lang [ β af_label_name β ] = β ΠΠΌΡ β ; |
$_lang [ β af_label_email β ] = β E-mail β ; |
$_lang [ β af_label_message β ] = β Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ β ; |
$_lang [ β af_err_action_ns β ] = β ΠΠ΅ ΡΠΊΠ°Π·Π°Π½ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action). β ; |
$_lang [ β af_err_action_nf β ] = β ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action). β ; |
$_lang [ β af_err_chunk_ns β ] = β ΠΠ΅ ΡΠΊΠ°Π·Π°Π½ ΡΠ°Π½ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΡΠΌΡ. β ; |
$_lang [ β af_err_chunk_nf β ] = β ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠ°Π½ΠΊ Β«[[+name]]Β» Ρ ΡΠΎΡΠΌΠΎΠΉ. β ; |
$_lang [ β af_err_snippet_ns β ] = β ΠΠ΅ ΡΠΊΠ°Π·Π°Π½ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΡΠΌΡ. β ; |
$_lang [ β af_err_snippet_nf β ] = β ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ Β«[[+name]]Β» Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΡΠΌΡ. β ; |
$_lang [ β af_err_has_errors β ] = β Π€ΠΎΡΠΌΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ β ; |
$_lang [ β af_success_submit β ] = β Π€ΠΎΡΠΌΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π° β ; |
- Β© 2019 GitHub , Inc.
- Terms
- Privacy
- Security
- Status
- Help
You canβt perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
AjaxForm + ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ = «ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action).»
ΠΡΡΡ ΡΠ°ΠΉΡ (site.com). Π‘ΡΠ°Π»Π° Π·Π°Π΄Π°ΡΠ° ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠ΅ΡΠΈΡ Π»Π΅Π½Π΄ΠΈΠ½Π³ΠΎΠ², ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠΌΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ. CΠ΄Π΅Π»Π°Π½ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½ (landing.site.com) Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ modx ΠΈ Π² Π½Π΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π»Π΅Π½Π΄ΠΈΠ½Π³ΠΈ (landing.site.com/1st/, landing.site.com/2nd/, landing.site.com/3rd/β¦ ) ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ Π»Π΅Π½Π΄ΠΈΠ½Π³ΠΎΠ² Π΅ΡΡΡ Π²ΡΠ·ΠΎΠ² 4Ρ ΡΠΎΡΠΌ ΡΠ΅ΡΠ΅Π· ajaxForm ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΎΡΠΌ ΠΏΡΠΈ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Π½ΠΎΠΌ ΡΠ·Π΅ΡΠ΅ (Π°Π΄ΠΌΠΈΠ½) ΡΠΎΡΠΌΡ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ, Π° Π΅ΡΠ»ΠΈ ΡΠ·Π΅Ρ Π°Π½ΠΎΠ½ΠΈΠΌ (ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° ΡΠ°ΠΉΡΠ°), ΡΠΎ Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Β«ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action).Β» Π Π»ΠΎΠ³Π΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ.ΠΡΠΊΠ°Π» ΡΡΡ ΠΎΡΠ²Π΅ΡΡ, Π²ΡΠ΅ ΡΡΠΎ Π½Π°ΡΠ΅Π»:
- ΡΠΎΠ²Π΅Ρ ΡΠ±ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· action ΡΠΎΡΠΌΡ β Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ.
- Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ php β ΠΈ ΡΠ°ΠΊ Π²ΡΠΊΠ»ΡΡΠ΅Π½Ρ (Π΄Π°ΠΆΠ΅ Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ Π² .htcccess ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΠ» php_flag register_globals off)
- ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π° 755 β ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ.
- Π‘ΠΊΡΠΈΠΏΡΡ ajaxForm Π³ΡΡΠ·ΡΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ β Ρ ΠΌΠ΅Π½Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·
- Π΅ΡΠ΅ ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΏΠΈΡΠ°Π» ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ ΡΡΠΎ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ, Π½ΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ.
ΠΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠΎΡΠΌ (ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ id ΠΈ name Ρ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΡΠ°ΠΌΠΈΡ
ΡΠΎΡΠΌ)
[[!AjaxForm?
&snippet=`FormIt`
&form=`pusmTpl`
&emailTpl=`pusmEmailTpl`
&hooks=`email, FormItSaveForm`
&formName = `[[+pusm_title]]`
&formFields = `pusm_title,pusm_phone,pusm_url`
&fieldNames = `pusm_title==ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°,pusm_phone==ΠΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°,pusm_url==Π‘ΡΡΠ°Π½ΠΈΡΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ`
&emailFromName =`[[!getIp]]`
&emailSubject=`ΠΠ΅Π½Π΄ΠΈΠ½Π³ - [[+pusm_title]]`
&emailTo=`{$_modx->config.send_to_emails}`
&emailFrom=`[email protected]`
&submitVar=`pusm_submit`
]]
ΠΠΎΠ΄ ΡΠΎΡΠΌΡ:<form data-abide novalidate action="{$modx->resource->uri}" method="post" accept-charset="utf-8">
<input type="tel" name="pusm_phone" value="[[!+fi.pusm_phone]]" pattern="integer" maxlength="13" required placeholder="ΠΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°"><input type="submit" name="pusm_submit" value="ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΡΠ²ΠΊΡ">
<input type="hidden" name="pusm_url" value="{$modx->config.site_url}{$modx->resource->uri}">
<input type="hidden" name="pusm_ip" value="[[!getIP]]">
<input type="hidden" name="pusm_title" value="">
</form>
AjaxForm + ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ = «ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action).»
ΠΡΡΡ ΡΠ°ΠΉΡ (site.com). Π‘ΡΠ°Π»Π° Π·Π°Π΄Π°ΡΠ° ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠ΅ΡΠΈΡ Π»Π΅Π½Π΄ΠΈΠ½Π³ΠΎΠ², ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠΌΠΈ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ. CΠ΄Π΅Π»Π°Π½ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½ (landing.site.com) Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ modx ΠΈ Π² Π½Π΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π»Π΅Π½Π΄ΠΈΠ½Π³ΠΈ (landing.site.com/1st/, landing.site.com/2nd/, landing.site.com/3rd/β¦ ) ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ Π»Π΅Π½Π΄ΠΈΠ½Π³ΠΎΠ² Π΅ΡΡΡ Π²ΡΠ·ΠΎΠ² 4Ρ ΡΠΎΡΠΌ ΡΠ΅ΡΠ΅Π· ajaxForm ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΎΡΠΌ ΠΏΡΠΈ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Π½ΠΎΠΌ ΡΠ·Π΅ΡΠ΅ (Π°Π΄ΠΌΠΈΠ½) ΡΠΎΡΠΌΡ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡΠΡΠΊΠ°Π» ΡΡΡ ΠΎΡΠ²Π΅ΡΡ, Π²ΡΠ΅ ΡΡΠΎ Π½Π°ΡΠ΅Π»:
- ΡΠΎΠ²Π΅Ρ ΡΠ±ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· action ΡΠΎΡΠΌΡ β Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ.
- Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ php β ΠΈ ΡΠ°ΠΊ Π²ΡΠΊΠ»ΡΡΠ΅Π½Ρ (Π΄Π°ΠΆΠ΅ Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ Π² .htcccess ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΠ» php_flag register_globals off)
- ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π° 755 β ΡΠΎΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ.
- Π‘ΠΊΡΠΈΠΏΡΡ ajaxForm Π³ΡΡΠ·ΡΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ β Ρ ΠΌΠ΅Π½Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·
- Π΅ΡΠ΅ ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΏΠΈΡΠ°Π» ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ ΡΡΠΎ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ, Π½ΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ.
ΠΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠΎΡΠΌ (ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ id ΠΈ name Ρ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΡΠ°ΠΌΠΈΡ
ΡΠΎΡΠΌ)
[[!AjaxForm?
&snippet=`FormIt`
&form=`pusmTpl`
&emailTpl=`pusmEmailTpl`
&hooks=`email, FormItSaveForm`
&formName = `[[+pusm_title]]`
&formFields = `pusm_title,pusm_phone,pusm_url`
&fieldNames = `pusm_title==ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°,pusm_phone==ΠΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°,pusm_url==Π‘ΡΡΠ°Π½ΠΈΡΠ° ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ`
&emailFromName =`[[!getIp]]`
&emailSubject=`ΠΠ΅Π½Π΄ΠΈΠ½Π³ - [[+pusm_title]]`
&emailTo=`{$_modx->config.send_to_emails}`
&emailFrom=`[email protected]`
&submitVar=`pusm_submit`
]]
ΠΠΎΠ΄ ΡΠΎΡΠΌΡ:<form data-abide novalidate action="{$modx->resource->uri}" method="post" accept-charset="utf-8">
<input type="tel" name="pusm_phone" value="[[!+fi.pusm_phone]]" pattern="integer" maxlength="13" required placeholder="ΠΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°"><input type="submit" name="pusm_submit" value="ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΡΠ²ΠΊΡ">
<input type="hidden" name="pusm_url" value="{$modx->config.site_url}{$modx->resource->uri}">
<input type="hidden" name="pusm_ip" value="[[!getIP]]">
<input type="hidden" name="pusm_title" value="">
</form>
ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action) / Π ΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ MODX
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ, ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.Π Π°Π½Π΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π½Π° ΡΠ°ΠΉΡ AjaxForm + FormIT Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ½ΡΡΡ Π² ΡΠ΅ΠΌ Π΄Π΅Π»ΠΎ.
ΠΠΎΡ Π²ΡΠ·ΠΎΠ² ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ°:
[[!AjaxForm?
&form=`tplAjaxForm`
&snippet=`FormIt`
&hooks=`FormItSaveForm,email`
&emailSubject=`Π’Π΅ΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅`
&emailTo=`[email protected]`
&emailFrom=`[email protected]`
&emailTpl=`tplEmail`
&validate=`name:minLength=^2^,email:email:required`
&validationErrorMessage=`Π ΡΠΎΡΠΌΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ!`
&successMessage=`Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ`
]]
ΠΠΎΡ ΡΠ°Π½ΠΊ tplAjaxForm:
<form
method="post" action="">
<div>
<h3>[[+pagetitle]]</h3>
<p>[[+longtitle]]</p>
</div>
<div>
<div>
<label for="af_name">ΠΠ°ΡΠ΅ ΠΈΠΌΡ</label>
<input type="text" name="name" value="" placeholder="ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ"/>
<span></span>
</div>
<div>
<label for="af_email">ΠΠ°Ρ Email</label>
<input type="email" name="email" value="" placeholder="ΠΠ²Π΅Π΄ΠΈΡΠ΅ email"/>
<span></span>
</div>
<div>
<label for="af_phone">ΠΠ°Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½</label>
<input type="text" name="phone" value="" placeholder="ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°"/>
<span></span>
</div>
<div>
<button type="submit">ΠΡΠΏΡΠ°Π²ΠΈΡΡ</button>
</div>
</div>
</form>
ΠΠΎΡ ΡΠ°Π½ΠΊ tplEmail:<h4>Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅</h4>
<p>ΠΡ ΠΊΠΎΠ³ΠΎ: [[+name]]</p>
<p>E-mail: [[+email]]</p>
<p>Π’Π΅Π»Π΅ΡΠΎΠ½: [[+phone]]</p>
Π§ΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΠΏΠΎΠ±ΡΠ²Π°Π» Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action). ΠΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΡΠ΄Π° Ρ ΠΎΡΡ Π±Ρ ΠΊΠΎΠΏΠ°ΡΡ? Π ΠΠΎΠ½ΡΠΎΠ»Π΅ Π½ΠΈ ΡΠ΅Π³ΠΎ Π½Π΅Ρ, ΠΈΠ»ΠΈ Π½Π΅ ΡΠ°ΠΌ ΡΠΌΠΎΡΡΡ?
ΠΠ°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
Π‘Π°ΠΉΡ
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ ΠΏΡΡΠΌΠΎ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ, ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΡΠΎΡΠΈΠ»Ρ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ modx.pro Π½Π΅ Π½Π΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΠ»Π°ΡΡ Π·Π°ΠΊΠ°Π·Π°. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΠΊΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, Π΄Π°Π»ΡΡΠ΅ Π²Ρ ΠΎΠ±ΡΠ°Π΅ΡΠ΅ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π½Π°ΡΠ΅ΠΉ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠΈ.
ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action) / Π ΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ MODX
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ, ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.Π Π°Π½Π΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π½Π° ΡΠ°ΠΉΡ AjaxForm + FormIT Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ½ΡΡΡ Π² ΡΠ΅ΠΌ Π΄Π΅Π»ΠΎ.
ΠΠΎΡ Π²ΡΠ·ΠΎΠ² ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠ°:
[[!AjaxForm?
&form=`tplAjaxForm`
&snippet=`FormIt`
&hooks=`FormItSaveForm,email`
&emailSubject=`Π’Π΅ΡΡΠΎΠ²ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅`
&emailTo=`[email protected]`
&emailFrom=`[email protected]`
&emailTpl=`tplEmail`
&validate=`name:minLength=^2^,email:email:required`
&validationErrorMessage=`Π ΡΠΎΡΠΌΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ!`
&successMessage=`Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ`
]]
ΠΠΎΡ ΡΠ°Π½ΠΊ tplAjaxForm:
<form
method="post" action="">
<div>
<h3>[[+pagetitle]]</h3>
<p>[[+longtitle]]</p>
</div>
<div>
<div>
<label for="af_name">ΠΠ°ΡΠ΅ ΠΈΠΌΡ</label>
<input type="text" name="name" value="" placeholder="ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ"/>
<span></span>
</div>
<div>
<label for="af_email">ΠΠ°Ρ Email</label>
<input type="email" name="email" value="" placeholder="ΠΠ²Π΅Π΄ΠΈΡΠ΅ email"/>
<span></span>
</div>
<div>
<label for="af_phone">ΠΠ°Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½</label>
<input type="text" name="phone" value="" placeholder="ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°"/>
<span></span>
</div>
<div>
<button type="submit">ΠΡΠΏΡΠ°Π²ΠΈΡΡ</button>
</div>
</div>
</form>
ΠΠΎΡ ΡΠ°Π½ΠΊ tplEmail:<h4>Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅</h4>
<p>ΠΡ ΠΊΠΎΠ³ΠΎ: [[+name]]</p>
<p>E-mail: [[+email]]</p>
<p>Π’Π΅Π»Π΅ΡΠΎΠ½: [[+phone]]</p>
Π§ΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ ΠΏΠΎΠ±ΡΠ²Π°Π» Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action). ΠΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΡΠ΄Π° Ρ ΠΎΡΡ Π±Ρ ΠΊΠΎΠΏΠ°ΡΡ? Π ΠΠΎΠ½ΡΠΎΠ»Π΅ Π½ΠΈ ΡΠ΅Π³ΠΎ Π½Π΅Ρ, ΠΈΠ»ΠΈ Π½Π΅ ΡΠ°ΠΌ ΡΠΌΠΎΡΡΡ?
ΠΠ°ΡΠ°Π½Π΅Π΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ!
Π‘Π°ΠΉΡ
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ ΠΏΡΡΠΌΠΎ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ, ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΡΠΎΡΠΈΠ»Ρ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ modx.pro Π½Π΅ Π½Π΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΠ»Π°ΡΡ Π·Π°ΠΊΠ°Π·Π°. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΡΠΊΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, Π΄Π°Π»ΡΡΠ΅ Π²Ρ ΠΎΠ±ΡΠ°Π΅ΡΠ΅ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π½Π°ΡΠ΅ΠΉ ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠΈ.
ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Formit / Π ΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ MODX
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ. ΠΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠΌΠ° Π΅ΡΠ»ΠΈ ΡΡΠΎΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊ Π½Π΅ΠΊΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ.Π’.Π΅. Π΅ΡΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ
[[AjaxForm?
&snippet=`FormIt`
&form=`popup-form`
&hooks=`FormItSaveForm,email`
&emailSubject=`Π Π΅ΠΌΠΎΠ½ΡΠ‘Π΄Π΅Π»Π°Π½.Π Π€ ΠΠ°ΡΠ²ΠΊΠ°`
&emailTo=`[[++mail]]`
&emailFrom=`[email protected]`
&emailFromName=`Π Π΅ΠΌΠΎΠ½ΡΠ‘Π΄Π΅Π»Π°Π½.Π Π€ ΠΠ°ΡΠ²ΠΊΠ°`
&validate=`namepopup:required,phonepopup:required`
&validationErrorMessage=`Π ΡΠΎΡΠΌΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ!`
&successMessage=`Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ`
&emailTpl=`popup-email-tpl`
&submitVar=`popup-submit`
]]
ΡΠΎ ΡΠΎΡΠΌΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ[[!AjaxForm?
&snippet=`FormIt`
&form=`popup-form`
&hooks=`FormItSaveForm,email`
&emailSubject=`Π Π΅ΠΌΠΎΠ½ΡΠ‘Π΄Π΅Π»Π°Π½.Π Π€ ΠΠ°ΡΠ²ΠΊΠ°`
&emailTo=`[[++mail]]`
&emailFrom=`[email protected]`
&emailFromName=`Π Π΅ΠΌΠΎΠ½ΡΠ‘Π΄Π΅Π»Π°Π½.Π Π€ ΠΠ°ΡΠ²ΠΊΠ°`
&validate=`namepopup:required,phonepopup:required`
&validationErrorMessage=`Π ΡΠΎΡΠΌΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ!`
&successMessage=`Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ`
&emailTpl=`popup-email-tpl`
&submitVar=`popup-submit`
]]
ΡΠΎ Π²ΡΠ΅ ΡΡΠΎ Π΄ΠΎ ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Ρ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. Π ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ. ΠΠ°ΠΆ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ FormIt, ΡΠΎ ΠΈΡΡΠΎΡΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ.Π Π΅ΡΠ»ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΡΡΠΈΡΡΠ΅ΠΌΡΠΌ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΡ Β«ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΡΠΌΡ (action).Β»
ΠΠ±Π·ΠΎΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ / DataArt corporate blog / Habr
Π― ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΏΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠΎΠ»ΡΠΌ, ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Π°ΠΌ. ΠΠΎΡΠ½ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π° (Single Sign-On), ΡΠ°ΡΡΠΌΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄Π΅ΡΠ°Π»ΡΠΌ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΠΆΠΈΠΌ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ.
- ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ β ΡΡΠΎ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ΅ΠΌ Π²Ρ ΡΠ²Π»ΡΠ΅ΡΠ΅ΡΡ. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠΌΡ, Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ, Π½ΠΎΠΌΠ΅Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, ΠΈΡΠ΄.
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ², ΡΡΠΎ Π²Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅ΡΡΡ ΡΠΎΡ, ΠΊΠ΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ (ΠΎΡ ΡΠ»ΠΎΠ²Π° βauthenticβ β ΠΈΡΡΠΈΠ½Π½ΡΠΉ, ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΡΠΉ).
- ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ β ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΠΎ Π²Π°ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎΠΏΠ°ΡΡΡ Π² Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΠ± Π²Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡ (ΡΠΏΡΠΎΡΡΡ Π²Π°ΡΠ΅ ΠΈΠΌΡ ΠΈ ΡΠ°ΠΌΠΈΠ»ΠΈΡ), Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡ (ΠΏΠΎΠΏΡΠΎΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΠΏΠΎΡΡ ΠΈ ΡΠ²Π΅ΡΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ) ΠΈ Π°Π²ΡΠΎΡΠΈΠ·ΡΡΡ (ΠΏΡΠΎΠ²Π΅ΡΡΡ, ΡΡΠΎ ΡΠ°ΠΌΠΈΠ»ΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π³ΠΎΡΡΠ΅ΠΉ), ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΡΡΡΡ Π²Π½ΡΡΡΡ.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π³Π΄Π΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΏΠΎΠ΄ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ (identity) ΠΏΠΎ username ΠΈΠ»ΠΈ email; ΠΏΠΎΠ΄ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ β ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΡΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ ΡΡΠΎΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π° ΠΏΠΎΠ΄ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ β ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²Π°ΡΠ΅ΠΉ ΡΠΎΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡ
Π΅ΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ
Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π΄Π°Π»Π΅Π΅. ΠΠΎ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ³ΠΎ.
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ username ΠΈ password Π΄Π»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ°ΡΠ° username/password Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠΈ Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ username ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½ΠΈΠΆΠ΅.
HTTP authentication
ΠΡΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ°Ρ HTTP 1.0/1.1, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ Π΄Π°Π²Π½ΠΎ ΠΈ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°ΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- Π‘Π΅ΡΠ²Π΅Ρ, ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ, ΠΎΡΡΡΠ»Π°Π΅Ρ HTTP ΡΡΠ°ΡΡΡ β401 Unauthorizedβ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ βWWW-Authenticateβ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΡ Π΅ΠΌΡ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
- ΠΡΠ°ΡΠ·Π΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ Π²Π²ΠΎΠ΄Π° username ΠΈ password. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
- ΠΠΎ Π²ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ ΠΊ ΡΡΠΎΠΌΡ Π²Π΅Π±-ΡΠ°ΠΉΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ βAuthorizationβ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
- Π‘Π΅ΡΠ²Π΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° (Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ) ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ACL ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡ Π΅ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΡ ΡΡ ΠΏΠΎ ΡΡΠΎΠ²Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ:
- Basic β Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠ°Ρ ΡΡ
Π΅ΠΌΠ°, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ username ΠΈ password ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Authorization Π² Π½Π΅Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ (base64-encoded). ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HTTPS (HTTP over SSL) ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ.
ΠΡΠΈΠΌΠ΅Ρ HTTP Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Basic ΡΡ Π΅ΠΌΡ. - Digest β challenge-response-ΡΡ Π΅ΠΌΠ°, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ nonce, Π° Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ MD5 Ρ ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ nonce. ΠΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π² Basic ΡΡ Π΅ΠΌΡ ΠΏΡΠΈ Π½Π΅Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ , Π½ΠΎ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Π° man-in-the-middle attacks (Ρ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΡΡ Π΅ΠΌΡ Π½Π° basic). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡ Π΅ΠΌΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
- NTLM (ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ Windows authentication) β ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° challenge-response ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΠΈΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΡΠ° ΡΡ Π΅ΠΌΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ HTTP, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Windows Active Directory Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . Π£ΡΠ·Π²ΠΈΠΌΠ° ΠΊ pass-the-hash-Π°ΡΠ°ΠΊΠ°ΠΌ.
- Negotiate β Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΡΡ Π΅ΠΌΠ° ΠΈΠ· ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Windows authentication, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ NTLM ΠΈ Kerberos Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ. Kerberos β Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Single Sign-On. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Π·ΠΎΠ½Π΅ intranet ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π΄ΠΎΠΌΠ΅Π½Π° Windows.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ HTTP-Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠΉΡΠΈ ΠΈΠ· Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ Π·Π°ΠΊΡΡΡΡ Π²ΡΠ΅ ΠΎΠΊΠ½Π° Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
Forms authentication
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π½Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ Π΅Π³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π° ΡΠΎΡΠ½Π΅Π΅, Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ: Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ HTML-ΡΠΎΡΠΌΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΠΈ username/password ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΅ΡΠ΅Π· HTTP POST Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ session token, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² browser cookies. ΠΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅Π±-Π·Π°ΠΏΡΠΎΡΠ°Ρ session token Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ forms authentication.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ session token Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
- ΠΠ°ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . Π‘Π΅ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ².
- ΠΠ°ΠΊ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ/ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ stateless-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π° ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠ°ΠΊΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ΅ΠΊΡΠΈΠΈ Β«ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Π°ΠΌΒ».
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ session token Π·Π°ΡΠ°ΡΡΡΡ Π΄Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ°, ΡΡΠΎ ΠΈ Π·Π½Π°Π½ΠΈΠ΅ username/password. ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π² ΡΠ»ΡΡΠ°Π΅ forms authentication Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ HTTPS.
ΠΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ
ΠΠ²Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅, ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° Π²Π΅Π±-ΡΠ°ΠΉΡΠ°Ρ . ΠΠΎ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, iOS ΠΈΠ»ΠΈ Android), Π½Π°ΡΡΠ΄Ρ Ρ HTTP Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ, ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ username ΠΈ password Π² HTTP Π·Π°ΠΏΡΠΎΡΠ°Ρ :
- URL query β ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ, Ρ. ΠΊ. ΡΡΡΠΎΠΊΠΈ URL ΠΌΠΎΠ³ΡΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ, ΠΏΡΠΎΠΊΡΠΈ ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ.
- Request body β Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, Π½ΠΎ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ΅Π»ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ POST, PUT, PATCH).
- HTTP header βΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Authorization (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Basic-ΡΡ Π΅ΠΌΠΎΠΉ), ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠΎΠ»Ρ ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ, Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠΊΠ»ΠΎΠ½Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΡΠ°Π·Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
, Π»ΠΈΠ±ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡ
Π½Π° ΠΊΠ»ΠΎΡΠΊΠ°Ρ
Π±ΡΠΌΠ°Π³ΠΈ. ΠΡΠ»ΠΈ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΡΠΌΠΎΠ³ Π²ΡΡΡΠ½ΠΈΡΡ ΠΏΠ°ΡΠΎΠ»Ρ, ΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΡΠ°ΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π½Π΅ ΡΠ·Π½Π°Π΅Ρ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΡΡΠ΄ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΡ
Π²Π·Π»ΠΎΠΌ ΡΡΠ΅ΡΠ½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠΏΠΈΡΠΎΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ:
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΡΠΈΡΠ΅Π½ΠΎ ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ (brute-force attacks).
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΌΠ΅Π½Ρ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π° (Ρ.Π΅. ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠ°ΡΠΎΠ»Ρ Π³Π΄Π΅-ΡΠΎ Π·Π°ΠΏΠΈΡΠ°Π½).
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΏΠΎ Π½Π΅Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌΡ HTTP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ Π² ΡΡΡΠΎΠΊΠ΅ URL.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ Π»ΠΈΠ±ΠΎ Π½Π΅ Π½ΠΎΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ·Π²ΠΈΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ΅ΡΠ½ΡΠΌ Π·Π°ΠΏΠΈΡΡΠΌ.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π²Π°ΠΆΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ: ΡΠΌΠ΅Π½Π° ΠΏΠ°ΡΠΎΠ»Ρ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠ²Π°ΡΠΎΠ² ΠΈ Ρ. ΠΏ.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ session tokens ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π½Ρ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½Ρ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ session tokens ΠΏΠΎ Π½Π΅Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠΌΡ HTTP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ Π² ΡΡΡΠΎΠΊΠ΅ URL.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎ Π΄Π»Ρ session fixation-Π°ΡΠ°ΠΊ (Ρ. Π΅. Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ session token ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ).
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ»Π°Π³ΠΈ HttpOnly ΠΈ Secure Π΄Π»Ρ browser cookies, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ session tokens.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ ΡΠ΅ΡΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ.
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌ
Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ certificate authority (CA). CA Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ Π€ΠΠ‘, Π²ΡΠΏΡΡΠΊΠ°ΡΡΠ΅ΠΉ ΠΏΠ°ΡΠΏΠΎΡΡΠ°). Π’Π°ΠΊΠΆΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·Π°Π½ Ρ Π·Π°ΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Ρ Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΠ°ΠΊΡ Π²Π»Π°Π΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ.
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π·Π°ΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΌΠΎΠ³ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, Π² ΡΠ°ΠΉΠ»Π΅, Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ (smart card, USB token). ΠΠ±ΡΡΠ½ΠΎ Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ ΠΈΠ»ΠΈ PIN-ΠΊΠΎΠ΄ΠΎΠΌ.
Π Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° X.509. ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ X.509-ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° SSL/TLS. ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, Π΅ΡΠ»ΠΈ Π²Π΅Π±-ΡΠ°ΠΉΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»:
- Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ certification authority (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²).
- Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π½Π° ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠΎΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ).
- Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΎΠ·Π²Π°Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ CA (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ).
ΠΡΠΈΠΌΠ΅Ρ X.509 ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°.
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΊΠ°ΠΊ subject (ΠΈΠΌΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°), issuer (ΡΠΌΠΈΡΠ΅Π½Ρ), serial number (ΡΠ΅ΡΠΈΠΉΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°) ΠΈΠ»ΠΈ thumbprint (ΠΎΡΠΏΠ΅ΡΠ°ΡΠΎΠΊ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ β ΠΊΡΠ΄Π° Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±, ΡΠ΅ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΊΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ (non-repudiation). ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ°Π»ΠΎΠ΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π² ΡΠΈΡΠΎΠΊΠΈΡ ΠΊΡΡΠ³Π°Ρ .
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠΎΠ»ΡΠΌ
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠΎΠ»ΡΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»ΡΠΌ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ two-factor authentication (2FA). Π ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄Π²ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΡ: ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π·Π½Π°Π΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΠΎΠ»Ρ), ΠΈ ΡΡΠΎ-ΡΠΎ, ΡΠ΅ΠΌ ΠΎΠ½ Π²Π»Π°Π΄Π΅Π΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ). ΠΠ°Π»ΠΈΡΠΈΠ΅ Π΄Π²ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΌ. Π±. Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π²ΠΈΠ΄ΠΎΠ² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ β Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π°ΠΆΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ: ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π΄Π΅Π½Π΅Π³, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΈ Ρ. ΠΏ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅:
- ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π½ΠΈΡ , ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π‘Π΅ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ Π²Π»Π°Π΄Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ. ΠΡΠΈΠΌΠ΅Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΎΠΊΠ΅Π½ΠΎΠ² β RSA SecurID; ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ β ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Google Authenticator.
- Π‘Π»ΡΡΠ°ΠΉΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠ΄Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· SMS ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°Π½Π°Π» ΡΠ²ΡΠ·ΠΈ. Π ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΡΠΎΡ Π²Π»Π°Π΄Π΅Π½ΠΈΡ β ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΡΠΎΡΠ½Π΅Π΅ β SIM-ΠΊΠ°ΡΡΠ°, ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ).
- Π Π°ΡΠΏΠ΅ΡΠ°ΡΠΊΠ° ΠΈΠ»ΠΈ scratch card ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²Π²Π΅ΡΡΠΈ Π½ΠΎΠ²ΡΠΉ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ.
ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ RSA SecurID Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 30 ΡΠ΅ΠΊΡΠ½Π΄.
Π Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ forms authentication: ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ΅ΡΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΠΎΠΌΡ ΠΏΠ°ΡΠΎΠ»Ρ.
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ Π΄ΠΎΡΡΡΠΏΠ°
ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΡΡΠΎΠΉΡΡΠ², ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ. ΠΠ΄Π΅ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΠΊΡΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠ»ΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° (access key, API key) β Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΠΎ ΡΡΡΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ username/password.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², ΡΠ΅ΡΠ²Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠ»ΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π»Π΅Π΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΡΠΈ ΠΊΠ»ΡΡΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ»ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΡΡΠΎΠ²Π΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°.
Π₯ΠΎΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΡ β ΠΎΠ±Π»Π°ΠΊΠΎ Amazon Web Services. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΅ΡΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΠΈ ΠΎΠ½ Ρ ΠΎΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ Amazon S3 Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΎΠ»Ρ AWS ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»ΡΡ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±Π»Π°ΠΊΡ: ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅Π½ΠΈΠ΅/Π·Π°ΠΏΠΈΡΡ Π΅Π³ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Amazon S3. ΠΡΠΎΡ ΠΊΠ»ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ AWS.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ (Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΠ» Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ ΡΠ²ΠΎΠΉ ΠΏΠ°ΡΠΎΠ»Ρ, Π° ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ°). ΠΠ»ΡΡΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ½ΡΡΠΎΠΏΠΈΠ΅ΠΉ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠ°ΡΠΎΠ»ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ Π±ΡΠ» ΡΠ°ΡΠΊΡΡΡ, ΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΈΡΡ Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠ»ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ.
Π‘ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ, Π·Π΄Π΅ΡΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°: ΠΊΠ»ΡΡΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ°ΡΡΡΡ HTTP-Π·Π°ΠΏΡΠΎΡΠ°: URL query, request body ΠΈΠ»ΠΈ HTTP header. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠ°ΡΠΎΠ»Ρ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ HTTP header. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ HTTP-ΡΡ Π΅ΠΌΡ Bearer Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΊΠ΅Π½Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ (Authorization: Bearer [token]). Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ SSL/TLS.
ΠΡΠΈΠΌΠ΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² HTTP Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡ Π΅ΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ Π΄Π»Ρ Π½Π΅Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠ»ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΡ Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ: ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ ΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠΉ. ΠΡΠ±Π»ΠΈΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π° ΡΠ΅ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ digest authentication ΡΡ Π΅ΠΌΠΎΠΉ, ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ nonce ΠΈΠ»ΠΈ timestamp, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ β Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ Ρ ΡΡ ΠΈΠ»ΠΈ HMAC ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠ»ΡΡΠ°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π²ΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ° Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΈ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡ replay attacks.
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Π°ΠΌ
Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Single Sign-On (SSO), Π³Π΄Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (service provider ΠΈΠ»ΠΈ relying party) Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (identity provider ΠΈΠ»ΠΈ authentication service). Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° β Π²Ρ ΠΎΠ΄ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ . ΠΠ΄Π΅ΡΡ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΠΌ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ identity provider (IP) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ Π² Π²ΠΈΠ΄Π΅ ΡΠΎΠΊΠ΅Π½Π°, Π° service provider (SP) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎΡ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ° ΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎΠ²Π½Π΅, Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΠΠ»ΠΈΠ΅Π½Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ Π² identity provider ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌ Π΄Π»Ρ Π½Π΅Π³ΠΎ (ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ°, ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ, Kerberos, ΠΈΡΠ΄.).
- ΠΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΎΡΠΈΡ identity provider ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΅ΠΌΡ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ SP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Identity provider Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
- ΠΠ»ΠΈΠ΅Π½Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ Π² SP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π°.
ΠΡΠΈΠΌΠ΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Β«Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎΒ» ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΠΊΠ΅Π½Π°, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Bearer ΡΡ
Π΅ΠΌΡ.
ΠΡΠΎΡΠ΅ΡΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅, ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Ρ. Π΅. ΡΠ°ΠΊΠΎΠ³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, iOS/Android ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ). ΠΡΠ°ΡΠ·Π΅Ρ ΠΆΠ΅ β ΠΏΠ°ΡΡΠΈΠ²Π½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ identity provider ΠΈ service provider.
ΠΡΠΈΠΌΠ΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Β«ΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎΒ» ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ (Π°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΠΌΠΈ) ΠΈ IP/SP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ². Π‘ΡΠ΅Π΄ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² β OAuth, OpenID Connect, SAML, ΠΈ WS-Federation. ΠΠ΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°Ρ β Π½ΠΈΠΆΠ΅ Π² ΡΡΠ°ΡΡΠ΅.
Π‘Π°ΠΌ ΡΠΎΠΊΠ΅Π½ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΡΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» ΡΠΎΠΊΠ΅Π½, ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΌ ΡΠΎΠΊΠ΅Π½Π°, ΡΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°Π±ΠΎΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΡΠ°ΠΌΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ (claims). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ.
ΠΡΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΊΠ΅Π½Π° SP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ:
- Π’ΠΎΠΊΠ΅Π½ Π±ΡΠ» Π²ΡΠ΄Π°Π½ Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ identity provider ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ»Ρ issuer).
- Π’ΠΎΠΊΠ΅Π½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ SP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ»Ρ audience).
- Π‘ΡΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° Π΅ΡΠ΅ Π½Π΅ ΠΈΡΡΠ΅ΠΊ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ»Ρ expiration date).
- Π’ΠΎΠΊΠ΅Π½ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΡΠΉ ΠΈ Π½Π΅ Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ).
Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ SP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² ΡΠΎΠΊΠ΅Π½Π΅.
Π€ΠΎΡΠΌΠ°ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ²
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:
- Simple Web Token (SWT) β Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ
ΠΏΠ°Ρ ΠΈΠΌΡ/Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ HTML form. Π‘ΡΠ°Π½Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠΌΠ΅Π½: Issuer, Audience, ExpiresOn ΠΈ HMACSHA256. Π’ΠΎΠΊΠ΅Π½ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±Π° IP- ΠΈ SP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠΎΡ ΠΊΠ»ΡΡ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ/ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠΊΠ΅Π½Π°.
ΠΡΠΈΠΌΠ΅Ρ SWT ΡΠΎΠΊΠ΅Π½Π° (ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ).
Issuer=http://auth.myservice.com&
Audience=http://myservice.com&
ExpiresOn=1435937883&
UserName=John Smith&
UserRole=Admin&
HMACSHA256=KOUQRPSpy64rvT2KnYyQKtFFXUIggnesSpE7ADA4o9w - JSON Web Token (JWT) β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈ Π±Π»ΠΎΠΊΠ°, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΎΡΠΊΠ°ΠΌΠΈ: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π½Π°Π±ΠΎΡ ΠΏΠΎΠ»Π΅ΠΉ (claims) ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ. ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° Π±Π»ΠΎΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² JSON-ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΡΠΌΠ°Ρ base64. ΠΠ°Π±ΠΎΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΡ ΠΈΠΌΡ/Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡ JWT ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΈΠΌΠ΅Π½ (iss, aud, exp ΠΈ Π΄ΡΡΠ³ΠΈΠ΅). ΠΠΎΠ΄ΠΏΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΡ
. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΎΡΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ JWT-ΡΠΎΠΊΠ΅Π½Π°.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ JWT ΡΠΎΠΊΠ΅Π½Π° (ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ 1 ΠΈ 2 Π±Π»ΠΎΠΊΠΎΠ²).
{ Β«algΒ»: Β«HS256Β», Β«typΒ»: Β«JWTΒ» }.
{ Β«issΒ»: Β«auth.myservice.comΒ», Β«audΒ»: Β«myservice.comΒ», Β«expΒ»: Β«1435937883Β», Β«userNameΒ»: Β«John SmithΒ», Β«userRoleΒ»: Β«AdminΒ» }.
S9Zs/8/uEGGTVVtLggFTizCsMtwOJnRhjaQ2BMUQhcY - Security Assertion Markup Language (SAML) β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½Ρ (SAML assertions) Π² XML-ΡΠΎΡΠΌΠ°ΡΠ΅, Π²ΠΊΠ»ΡΡΠ°ΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΠΌΠΈΡΠ΅Π½ΡΠ΅, ΠΎ ΡΡΠ±ΡΠ΅ΠΊΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠΊΠ΅Π½Π°, Π½Π°Π±ΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ (statements) ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅. ΠΠΎΠ΄ΠΏΠΈΡΡ SAML-ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π°ΡΡΠΈΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ², SAML-ΡΠΎΠΊΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π²Π»Π°Π΄Π΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΡΠ΅ΡΠ΅Π· man-in-the-middle-Π°ΡΠ°ΠΊΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
Π‘ΡΠ°Π½Π΄Π°ΡΡ SAML
Π‘ΡΠ°Π½Π΄Π°ΡΡ Security Assertion Markup Language (SAML) ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΌΠ΅ΠΆΠ΄Ρ identity provider ΠΈ service provider Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π²Π΅ΡΡΠΈΠΈ 1.0 ΠΈ 1.1 Π±ΡΠ»ΠΈ Π²ΡΠΏΡΡΠ΅Π½Ρ Π² 2002 β 2003 Π³Π³., Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π²Π΅ΡΡΠΈΡ 2.0, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡΠ°Ρ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ°Ρ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π² 2005 Π³.
ΠΡΠΎΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌ. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Β«ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΒ» ΡΡΠ°Π½Π΄Π°ΡΡΠ°:
- Assertions β ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ SAML ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π² XML ΡΠΎΡΠΌΠ°ΡΠ΅.
- Protocols β Π½Π°Π±ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ β Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π°, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ², Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ (logout), ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
- Bindings β ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ, ΠΊΠ°ΠΊ HTTP Redirect, HTTP POST, HTTP Artifact (ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ), SAML SOAP, SAML URI (Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
- Profiles β ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ Π½Π°Π±ΠΎΡ assertions, protocols ΠΈ bindings Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ Π»ΡΡΡΠ΅ΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. Web Browser SSO β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ°Π½Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΎΠ»Π΅ΠΉ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ², Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΊΠ»ΡΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ. ΠΏ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SAML Π΄Π»Ρ ΡΡΠ΅Π½Π°ΡΠΈΡ Single Sign-On. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ Π½Π° Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° (ΡΠ°Π³ β 1 Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²). Π’. ΠΊ. ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π±ΡΠ» Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½, SP ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π³ΠΎ Π½Π° ΡΠ°ΠΉΡ identity providerβΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° (ΡΠ°Π³ β 2). ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ° SP, Π³Π΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SAML HTTP Redirect binding Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΡΠΎΠΊΠ΅Π½Π°:
Π ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, identity provider Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΡΠ°Π³ΠΈ β3-4), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ° IP Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ HTTP POST binding (ΡΠ°Π³ β 5):
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±ΡΠ°ΡΠ·Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΡΡΡ ΡΠΎΡΠΌΡ Π½Π° ΡΠ°ΠΉΡ service providerβΠ° (ΡΠ°Π³ β 6), ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ (ΡΠ°Π³ β 7).
Π‘ΡΠ°Π½Π΄Π°ΡΡΡ WS-Trust ΠΈ WS-Federation
WS-Trust ΠΈ WS-Federation Π²Ρ ΠΎΠ΄ΡΡ Π² Π³ΡΡΠΏΠΏΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² WS-*, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ SOAP/XML-Π²Π΅Π± ΡΠ΅ΡΠ²ΠΈΡΡ. ΠΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π³ΡΡΠΏΠΏΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, ΠΊΡΠ΄Π° Π²Ρ ΠΎΠ΄ΡΡ Microsoft, IBM, VeriSign ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ°ΡΡΠ΄Ρ Ρ SAML, ΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ .
Π‘ΡΠ°Π½Π΄Π°ΡΡ WS-Trust ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅ΡΠ²ΠΈΡΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Secure Token Service (STS). ΠΡΠΎΡ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ SOAP ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ SAML-ΡΠΎΠΊΠ΅Π½Ρ.
Π‘ΡΠ°Π½Π΄Π°ΡΡ WS-Federation ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΡΠΈ ΡΡΠΎΠΌ WS-Federation ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅ΡΠ²ΠΈΡΠ° STS, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ WS-Trust. Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΡΠ°Π½Π΄Π°ΡΡ WS-Federation ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ:
- Π€ΠΎΡΠΌΠ°Ρ ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ .
- Π€ΡΠ½ΠΊΡΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· Π²ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌ (single sign-out).
- Π‘Π΅ΡΠ²ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅.
- Π‘Π΅ΡΠ²ΠΈΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² (Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ²) ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ WS-Federation ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΠΈΡΡ ΡΠ΅ ΠΆΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΡΡΠΎ ΠΈ SAML, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
Π‘ΡΠ°Π½Π΄Π°ΡΡΡ OAuth ΠΈ OpenID Connect
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ SAML ΠΈ WS-Federation, ΡΡΠ°Π½Π΄Π°ΡΡ OAuth (Open Authorization) Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡ Π΅ΠΌΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° Π±Π°Π·Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° (ΠΎΠ± ΡΡΠΎΠΌ β Π½ΠΈΠΆΠ΅).
ΠΠ΅ΡΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ Π² 2007 β 2010 Π³Π³., Π° ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ 2.0 ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π² 2012 Π³. ΠΠ΅ΡΡΠΈΡ 2.0 Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡ, Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ 1.0. Π‘Π΅ΠΉΡΠ°Ρ OAuth 2.0 ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΡΡΠ΅ΡΡΠ΅-ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΠ°ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΡ. ΠΠ°ΠΊ ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ½ΠΎ ΡΠΌΠ΅Π΅Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΏΠΈΡΠ΅ΠΌ Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ Π±ΡΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ Π² ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌΡΠΉ ΠΌΠ°ΡΡΡΡΡ. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊ Gmail?
> ΠΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΊΠ°Π·Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ? β ΠΏΠ»ΠΎΡ
ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
> ΠΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»ΡΡ Π΄ΠΎΡΡΡΠΏΠ°? β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π²Π΅ΡΡΠΌΠ° ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΠ°ΠΊ ΡΠ°Π· ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡ OAuth: ΠΎΠ½ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠΉ (client) ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (resource server) Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (resource owner). Π ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ Π²Π΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π³ΠΎΠ²:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (resource owner) Π΄Π°Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (client) Π½Π° Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π³ΡΠ°Π½ΡΠ°. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π³ΡΠ°Π½Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΡ Π½ΠΈΠΆΠ΅.
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΡΡΡΡ Π² ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΠ²ΠΎΠΉ Π³ΡΠ°Π½Ρ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ β Google. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠ»ΡΡΠ° Π΄ΠΎΡΡΡΠΏΠ°, Π²ΡΠ΄Π°Π½Π½ΡΠΌ Π΅ΠΌΡ ΠΏΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ.
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎΡ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ β ΡΠ΅ΡΠ²ΠΈΡ Gmail).
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ OAuth.
Π‘ΡΠ°Π½Π΄Π°ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ Π²ΠΈΠ΄Π° Π³ΡΠ°Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- Authorization Code β ΡΡΠΎΡ Π³ΡΠ°Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠΈΡ Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ°. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π³ΡΠ°Π½ΡΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π² SAML ΠΈ WS-Federation.
- Implicit β ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΊΠ΅Π½ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, JavaScript-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π³ΡΠ°Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠΊΠ΅Π½, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, Π° ΡΠ°Π³ β 2 ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈΠ· ΡΡΠ΅Π½Π°ΡΠΈΡ Π²ΡΡΠ΅.
- Resource Owner Password Credentials β Π³ΡΠ°Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ°ΡΡ username/password ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌΒ» Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ Gmail).
- Client Credentials β Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ²ΠΎΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ° (ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°Π³ β 1).
Π‘ΡΠ°Π½Π΄Π°ΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΌΠ°Ρ ΡΠΎΠΊΠ΅Π½Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π² ΡΡΠ΅Π½Π°ΡΠΈΡΡ , Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½, Ρ. ΠΊ. ΠΎΠ½ Π»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ. ΠΠΎΡΡΠΎΠΌΡ Π½ΠΈ ΡΠΎΠΊΠ΅Π½, Π½ΠΈ Π³ΡΠ°Π½Ρ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
- ΠΠ°ΡΠ°ΡΡΡΡ API ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΠΌΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, /me Π² Facebook API). ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎ-Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡ OpenID Connect, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΉ ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ²Π΅ΡΡ OAuth (ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² 2014 Π³.). Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ, ΡΠ΅ΡΠ²Π΅Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ identity token Π½Π° ΡΠ°Π³Π΅ β 2. ΠΡΠΎΡ ΡΠΎΠΊΠ΅Π½ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JWT Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π°Π±ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ (claims) Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅.
Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ OpenID Connect, Π·Π°ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ° OpenID 1.0 ΠΈ 2.0, ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π±ΠΎΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΠ΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ . ΠΠΈΠΆΠ΅ β ΡΠ°Π±Π»ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π·ΡΠΌΠΈΡΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ:
Π‘ΠΏΠΎΡΠΎΠ± |
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ |
ΠΡΠΎΡΠΎΠΊΠΎΠ»Ρ |
ΠΠΎ ΠΏΠ°ΡΠΎΠ»Ρ |
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ |
HTTP, Forms |
ΠΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌ |
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ; Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² |
SSL/TLS |
ΠΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΌ ΠΏΠ°ΡΠΎΠ»ΡΠΌ |
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ two-factor authentication) |
Forms |
ΠΠΎ ΠΊΠ»ΡΡΠ°ΠΌ Π΄ΠΎΡΡΡΠΏΠ° |
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ |
— |
ΠΠΎ ΡΠΎΠΊΠ΅Π½Π°ΠΌ |
ΠΠ΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ; Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ |
SAML, WS-Federation, OAuth, OpenID Connect |
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΈ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΅Π΅ ΠΏΡΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎ Π½ΠΎΠ²ΡΡ Π²ΡΡΡΠ΅Ρ!
ΠΠ²ΡΠΎΡ: ΠΠΌΠΈΡΡΠΈΠΉ ΠΡΡΠΎΡΡΠΊΠΎΠ², Solutions Architect Π² DataArt.