HTTP 401 Unauthorized ΠΡΠ΅ΡΠΊΠ°: ΠΡΠ»Π½ΠΎ Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΈ ΠΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅
ΠΠΎΠ΄ΡΡ Π·Π° ΡΡΠ°ΡΡΡ HTTP 401 Unauthorized ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ²ΡΡΡΡ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²Π°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°, Π½ΠΎ ΠΎΡΠΊΠ°Π·Π²Π° Π΄Π° Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ Π»ΠΈΠΏΡΠ²Π°Ρ, ΠΈΠ»ΠΈ ΡΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ, ΠΈΠ»ΠΈ ΡΠ° ΠΈΠ·ΡΠ΅ΠΊΠ»ΠΈ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ Π³ΡΠ΅ΡΠΊΠ° 403 Forbidden β ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ ΡΡΡΠ²ΡΡΡΡ Π²ΠΈ ΡΠ°Π·ΠΏΠΎΠ·Π½Π°Π²Π°, Π½ΠΎ ΠΎΡΠΊΠ°Π·Π²Π° Π΄ΠΎΡΡΡΠΏ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ β 401 ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠ° Π·Π° Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅: ΡΡΡΠ²ΡΡΡΡ Π½Π΅ Π·Π½Π°Π΅ ΠΊΠΎΠΉ ΡΡΠ΅ Π²ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈ.
Π’ΠΎΠ²Π° ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΅ Π²Π°ΠΆΠ½ΠΎ. ΠΡΠ³ΠΎΠ²ΠΎΡΡΡ 401 Π²ΠΈΠ½Π°Π³ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° Π·Π°Π³Π»Π°Π²ΠΊΠ° WWW-Authenticate Π² ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°, ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ°ΠΉΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊΠΎΡ ΡΡ
Π΅ΠΌΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. ΠΠΊΠΎ ΡΠ°Π·ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠ° Π»ΠΈΠΏΡΠ²Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ²Π°ΡΠ΅ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ ΡΡΡΠ²ΡΡ, Π° Π½Π΅ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° Π½Π΅ΡΡΠΏΠ΅Ρ
ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΏΠ΅ΡΡΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅.
ΠΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΡΠ³ΠΎΠ²ΠΎΡ 401
ΠΡΠ΅ΡΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π° ΠΏΠΎΠ΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΡΡΠ²ΡΡΠ½ΠΈΡ ΡΠΎΡΡΡΠ΅Ρ, ΡΠ°ΠΌΠΊΠ°ΡΠ° ΠΈΠ»ΠΈ CDN ΠΏΡΠ΅Π΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
401 UnauthorizedHTTP Error 401 β Unauthorized401 Unauthorized: Access is denied due to invalid credentialsAuthorization Required
401 Authorization Required (ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΎ Π² NGINX)
HTTP 401 (API ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, Postman, curl)
ΠΡΠΈΡΠΊΠΈ ΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΠΊΠΎΠ΄ Π·Π° ΡΡΠ°ΡΡΡ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ ΠΎΡ RFC 9110. ΠΠ°ΡΠΈΠ°ΡΠΈΡΡΠ° Π² ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ°ΡΠ° Π΅ ΡΠΈΡΡΠΎ ΠΊΠΎΠ·ΠΌΠ΅ΡΠΈΡΠ½Π° β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΎΡ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°, ΠΎΠ±ΡΠ°ΡΠ½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ°.
Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠ°ΡΠ° Π°Π½Π°ΡΠΎΠΌΠΈΡ Π½Π° Π³ΡΠ΅ΡΠΊΠ° 401
Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π° Π³Π°Π΄Π°Π΅Π½Π΅ΡΠΎ. ΠΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ ΡΠ΅ΡΡΡΡ Π±Π΅Π· ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΡΡΠ²ΡΡΡΡ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Ρ:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="example", error="invalid_token"
Content-Type: application/json
ΠΠ°Π³Π»Π°Π²ΠΊΠ°ΡΠ° WWW-Authenticate Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅Π»ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ°. Π’Ρ ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠΎΡΠ½ΠΎ ΠΊΠΎΡ ΡΡ
Π΅ΠΌΠ° β Basic, Bearer, Digest, NTLM ΠΈΠ»ΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΡ
Π΅ΠΌΠ° β Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ°. ΠΠ»ΠΈΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠ° ΡΠ°Π·ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠ° ΠΈ ΠΏΠΎΠ²ΡΠ°ΡΡ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π±Π΅Π· Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ° ΡΠ²ΠΎΡΡΠ° Π·Π°ΡΠ²ΠΊΠ°, ΡΠ΅ ΡΠ΅ Π²ΡΡΡΠΈ Π² Π±Π΅Π·ΠΊΡΠ°Π΅Π½ ΡΠΈΠΊΡΠ».
401 ΡΡΠ΅ΡΡ 403 ΡΡΠ΅ΡΡ 407: ΠΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ°
ΠΠΎΠ΄ Π·Π° ΡΡΠ°ΡΡΡ
ΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠ½ΠΎΠ²Π½Π° ΠΏΡΠΈΡΠΈΠ½Π°
ΠΠ°Π³Π»Π°Π²ΠΊΠ° `WWW-Authenticate`
—
—
—
—
401
Unauthorized
ΠΠΈΠΏΡΠ²Π°ΡΠΈ ΠΈΠ»ΠΈ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅
ΠΠ·ΠΈΡΠΊΠ²Π° ΡΠ΅ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ°
403
Forbidden
Π£Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½, Π½ΠΎ Π»ΠΈΠΏΡΠ²Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ΅ ΠΏΡΠΈΡΡΡΡΠ²Π°
407
Proxy Auth Required
ΠΡΠΎΠΊΡΠΈ ΡΡΡΠ²ΡΡΡΡ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠ°Π³Π»Π°Π²ΠΊΠ° `Proxy-Authenticate`
511
Network Auth Required
Captive portal (Ρ
ΠΎΡΠ΅Π»ΡΠΊΠΈ Wi-Fi ΠΈ Π΄Ρ.)
ΠΠ΅ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΎ
ΠΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° 403 ΠΊΠ°ΡΠΎ 401 Π΅ ΡΠ΅ΡΡΠ° Π³ΡΠ΅ΡΠΊΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅. ΠΠΊΠΎ Π²Π°ΡΠΈΡΡ ΡΡΡΠ²ΡΡ Π²ΡΡΡΠ° 401, Π½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ° WWW-Authenticate, ΡΠΎΠΉ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° RFC 9110 β ΠΈ Π½ΡΠΊΠΎΠΈ ΡΡΡΠΎΠ³ΠΈ HTTP ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ°Ρ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ° ΠΊΠ°ΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° Π³ΡΠ΅ΡΠΊΠ° 401 Unauthorized
ΠΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ ΠΈΠΌΠ΅ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Π° β Π½Π°ΠΉ-ΡΠ΅ΡΡΠ°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° Π΄ΠΎΡΡΡΠΏ ΡΡΠ΅Π· Π±ΡΠ°ΡΠ·ΡΡ
ΠΠ·ΡΠ΅ΠΊΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ β Bearer ΡΠΎΠΊΠ΅Π½ΠΈΡΠ΅ Π½Π° OAuth 2.0 ΠΈΠΌΠ°Ρ ΠΊΡΠ°ΠΉΠ½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ expires_in; ΡΠ»Π΅Π΄ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΉ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° Π²ΡΡΡΠ° 401, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠΎΠΊΠ΅Π½ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½
ΠΡΠΌΠ΅Π½Π΅Π½ΠΈ API ΠΊΠ»ΡΡΠΎΠ²Π΅ β ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π°Π½ΡΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ° Π±Π΅Π· ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ΅Π½
ΠΠ΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π° JWT ΠΏΠΎΠ΄ΠΏΠΈΡ β Π°ΠΊΠΎ ΡΠ°ΠΉΠ½ΠΈΡΡ ΠΊΠ»ΡΡ Π·Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π° ΡΠΎΠΊΠ΅Π½, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ ΡΡΡ ΡΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»Ρ Π±Π΅Π·ΡΡΠΌΠ½ΠΎ
Π Π°Π·ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠ° β JWT Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠ²ΡΡΠ΄Π΅Π½ΠΈΡ iat (ΠΈΠ·Π΄Π°Π΄Π΅Π½ Π²) ΠΈ exp (ΠΈΠ·ΡΠΈΡΠ°Π½Π΅), Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°Π½ΠΈ ΡΠΏΡΡΠΌΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ°; ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Π½ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΎΡΡ
Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ
ΠΠΈΠΏΡΠ²Π°ΡΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ
ΠΡΡΠΊΠ° ΡΡ
Π΅ΠΌΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΈΠΌΠ° ΡΠΎΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ°. ΠΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ Π½Π΅Π³ΠΎ β Π΄ΠΎΡΠΈ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Base64 Π·Π°ΠΏΡΠ»Π²Π°Π½Π΅ β ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° 401:
# Correct Basic Auth header
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
# Correct Bearer token header
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Π§Π΅ΡΡΠ° Π³ΡΠ΅ΡΠΊΠ° Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° Authorization: bearer <token> (ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ b). ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ RFC 6750 ΠΏΠΎΡΠΎΡΠ²Π°, ΡΠ΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΡ
Π΅ΠΌΠ°ΡΠ° Π΅ Π½Π΅ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΠΊΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΡΠ°, ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΡΡΡΠΈΠΊΡΠ½ΠΎ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΈ ΠΎΡΡ
Π²ΡΡΠ»ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° Ρ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ.
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ°
ΠΠ°Π»ΠΎΠΆΠ΅Π½ Π³ΡΠ΅ΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ β ΡΡΡΠ²ΡΡ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π·Π° OAuth 2.0, ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Π·Π° Basic Auth, ΡΠ΅ Π³ΠΈ ΠΎΡΡ
Π²ΡΡΠ»ΠΈ
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ .htaccess β ΠΏΡΠΈ Apache, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° AuthType, AuthName ΠΈΠ»ΠΈ Require Π² .htaccess ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° Π·Π°Π΄ ΠΏΠΎΠ΄ΠΊΠ°Π½Π° Π·Π° ΠΏΠ°ΡΠΎΠ»Π°
ΠΠ»ΠΎΠΊΠΎΠ²Π΅ auth_basic Π½Π° NGINX β Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° auth_basic, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½Π° ΠΊΡΠΌ Π³ΡΠ΅ΡΠ½ΠΈΡ Π±Π»ΠΎΠΊ location, ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ
ΠΠ±ΡΠ°ΡΠ΅Π½ ΠΏΡΠΎΠΊΡΠΈ, ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Ρ Π·Π°Π³Π»Π°Π²ΠΊΠΈ β Π±Π°Π»Π°Π½ΡΡΠΎΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ (NGINX, HAProxy, Cloudflare) ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Ρ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Ρ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Authorization ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ Π΄ΠΎ ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΡΡΡΠ²ΡΡ
ΠΠ°ΠΌΠ΅ΡΠ° ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠΎΠ²ΡΠ΅Π΄Π΅Π½ΠΈ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ β ΡΠ΅ΡΠΈΠΉΠ½ΠΈΡΠ΅ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ, Π½ΠΎΡΠ΅ΡΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ΅Π΄ΡΡ ΠΈΠ»ΠΈ Π΄Π° Π½Π΅ ΡΡΠ²ΠΏΠ°Π΄Π°Ρ ΡΠ»Π΅Π΄ Π°Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΡ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ°
ΠΠ³ΡΠ΅ΡΠΈΠ²Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ° β Π±Π»ΠΎΠΊΠ΅ΡΠΈ Π½Π° ΡΠ΅ΠΊΠ»Π°ΠΌΠΈ, ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΠΏΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ VPN ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Ρ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Ρ Π·Π°Π³Π»Π°Π²ΠΊΠΈΡΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅
ΠΠ΅ΡΡΠΏΠ΅Ρ
ΠΈ ΠΏΡΠΈ CORS ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° β ΠΏΡΠΈ ΠΊΡΠΎΡ-ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈ API ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, Π±ΡΠ°ΡΠ·ΡΡΡΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° Π·Π°ΡΠ²ΠΊΠ° OPTIONS; Π°ΠΊΠΎ ΡΡΡΠ²ΡΡΡΡ Π½Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π° Π½Π΅Ρ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½Π°ΡΠ° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°
ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠ°ΠΊΡΠΎΡΠΈ
ΠΡΠ°Π²ΠΈΠ»Π° Π½Π° Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°, Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ β WAF (Web Application Firewalls) Ρ ΠΏΡΠ΅ΠΊΠ°Π»Π΅Π½ΠΎ Π°Π³ΡΠ΅ΡΠΈΠ²Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΠΈ ΠΎΡΡ
Π²ΡΡΠ»ΡΡ Π·Π°ΡΠ²ΠΊΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Authorization, ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π°ΡΠ°ΠΊΠΈ Ρ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°Π½Π΅
CDN ΠΊΠ΅ΡΠΈΡΠ° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ β Π°ΠΊΠΎ CDN ΠΊΠ΅ΡΠΈΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡ 401 ΠΈ Π³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, Π΄ΠΎΡΠΈ Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΈ
ΠΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° IP β ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈ ΡΠ΅ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΈ ΠΎΠΏΠΈΡΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΡΡΠ° 401 Π·Π° Π²ΡΠΈΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΡΠΎΠ·ΠΈ IP
ΠΠ°ΠΊ Π΄Π° ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠ° 401: Π‘ΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°
ΠΠ° ΠΊΡΠ°ΠΉΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏ ΡΡΠ΅Π· Π±ΡΠ°ΡΠ·ΡΡ
Π‘ΡΡΠΏΠΊΠ° 1: ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠΎΡΠ½ΠΎ
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ Caps Lock Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½. ΠΠΎΡΠ²ΡΡΠ΄Π΅ΡΠ΅, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΠΏΠ°ΡΠΎΠ»Π° β Π½Π΅ ΡΠ°ΠΊΠ°Π²Π°, Π·Π°ΠΏΠ°Π·Π΅Π½Π° ΠΏΡΠ΅Π΄ΠΈ ΡΠΊΠΎΡΠΎΡΠ½ΠΎ Π½ΡΠ»ΠΈΡΠ°Π½Π΅. ΠΠΊΠΎ Π²Π°ΡΠΈΡΡ Π°ΠΊΠ°ΡΠ½Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΠΊΡΠΎΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ (MFA), ΡΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π΅ Π΅ ΠΈΠ·ΡΠ΅ΠΊΡΠ» (TOTP ΠΊΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ ΡΠ° Π²Π°Π»ΠΈΠ΄Π½ΠΈ Π·Π° 30 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅).
Π‘ΡΡΠΏΠΊΠ° 2: ΠΠ·ΡΠΈΡΡΠ΅ΡΠ΅ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈΡΠ΅ ΠΈ ΠΊΠ΅ΡΠ° Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ°
ΠΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ ΡΠ΅ΡΠΈΠΉΠ½ΠΈ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ ΡΠ° ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° 401 ΡΠΈΠΊΠ»ΠΈ. Π Chrome, Π½Π°Π²ΠΈΠ³ΠΈΡΠ°ΠΉΡΠ΅ Π΄ΠΎ chrome://settings/clearBrowserData, Π·Π°Π΄Π°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π° ΠΡΠΈΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π°, ΠΎΡΠΌΠ΅ΡΠ½Π΅ΡΠ΅ ΠΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ ΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° ΡΠ°ΠΉΡΠΎΠ²Π΅ ΠΈ ΠΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΡΠΈΡΡΠ΅ΡΠ΅. Π Firefox, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ about:preferences#privacy ΠΈ ΠΊΠ»ΠΈΠΊΠ½Π΅ΡΠ΅ ΠΠ·ΡΠΈΡΡΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅.
Π‘Π»Π΅Π΄ ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ, Π·Π°ΡΠ²ΠΎΡΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈ Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ° Π·Π° Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈΡ Π΄ΠΎΠΌΠ΅ΠΉΠ½ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ β Π½ΡΠΊΠΎΠΈ Π±ΡΠ°ΡΠ·ΡΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ΡΠΈΠΉΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠ΅Π»ΡΠ²Π° ΠΏΡΠΈ ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ΅ΡΠ°, Π°ΠΊΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡ ΠΎΡΡΠ°Π½Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½.
Π‘ΡΡΠΏΠΊΠ° 3: Π’Π΅ΡΡΠ²Π°ΠΉΡΠ΅ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π·Π° ΠΏΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΎ/ΠΈΠ½ΠΊΠΎΠ³Π½ΠΈΡΠΎ ΡΡΡΡΠΈΡΠ°Π½Π΅
ΠΡΠΎΠ·ΠΎΡΠ΅ΡΡΡ Π·Π° ΠΏΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΡΠΈΡΠ°Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ° Π±Π΅Π· Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ, Π±Π΅Π· ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ. ΠΠΊΠΎ 401 ΠΈΠ·ΡΠ΅Π·Π½Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΈΠ½ΠΊΠΎΠ³Π½ΠΈΡΠΎ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ½ΠΎ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°: ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½Π° Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠ°, ΠΈΠ»ΠΈ ΠΊΠ΅ΡΠΈΡΠ°Π½ Π»ΠΎΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡ, ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ°.
Π‘ΡΡΠΏΠΊΠ° 4: ΠΠ΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡΡΠ° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»Π½ΠΎ
ΠΠ°Π²ΠΈΠ³ΠΈΡΠ°ΠΉΡΠ΅ Π΄ΠΎ chrome://extensions/ ΠΈ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ. ΠΡΠ΅Π·Π°ΡΠ΅Π΄Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°. ΠΠΊΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΡΠΏΠ΅Π΅, Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡΡΠ° Π΅Π΄Π½ΠΎ ΠΏΠΎ Π΅Π΄Π½ΠΎ, Π·Π° Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π²ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠ°. Privacy Badger, uMatrix ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ VPN ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ° ΡΠ΅ΡΡΠΈ Π½Π°ΡΡΡΠΈΡΠ΅Π»ΠΈ.
Π‘ΡΡΠΏΠΊΠ° 5: ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ URL Π°Π΄ΡΠ΅ΡΠ° Π·Π° Π³ΡΠ΅ΡΠΊΠΈ
Π£Π²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π½Π΅ Π½Π°Π²ΠΈΠ³ΠΈΡΠ°ΡΠ΅ ΠΊΡΠΌ ΠΏΡΡ, ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ. URL Π°Π΄ΡΠ΅Ρ ΠΊΠ°ΡΠΎ /admin/dashboard ΡΠ΅ Π²ΡΡΠ½Π΅ 401, Π°ΠΊΠΎ Π²Π°ΡΠ°ΡΠ° ΡΠ΅ΡΠΈΡ Π½ΡΠΌΠ° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ β Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ Π²ΠΈ Π²Π»ΠΈΠ·Π°Π½Π΅ Π΅ Π²Π°Π»ΠΈΠ΄Π½ΠΎ. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠΎΡΠ½ΠΈΡ ΠΏΡΡ ΠΏΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° ΡΠ°ΠΉΡΠ° ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°.
Π‘ΡΡΠΏΠΊΠ° 6: ΠΡΠ»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° ΡΠΈ
ΠΠΊΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΠΈΡΠ° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΠ°Π±ΡΠ°Π²Π΅Π½Π° ΠΏΠ°ΡΠΎΠ»Π°. Π‘Π»Π΅Π΄ Π½ΡΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ, ΠΈΠ·ΡΠΈΡΡΠ΅ΡΠ΅ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π²Π»ΠΈΠ·Π°Π½Π΅ β ΡΡΠ°ΡΠ°ΡΠ° ΡΠ΅ΡΠΈΠΉΠ½Π° Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Π»Π΅Π·Π΅ Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Ρ Π½ΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ API ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ
Π‘ΡΡΠΏΠΊΠ° 7: ΠΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΡΡΠΎΠ²ΠΈΡ HTTP ΠΎΡΠ³ΠΎΠ²ΠΎΡ
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎΡΠΎ ΠΈ Π΄Π° Π΅, ΡΠ»ΠΎΠ²Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΈΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΡΡΡΠ²ΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ curl Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΠΈΠ·Ρ
ΠΎΠ΄:
curl -v -H "Authorization: Bearer YOUR_TOKEN" https://api.example.com/endpoint
Π€Π»Π°Π³ΡΡ -v ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅Π»ΡΡΠ²ΠΎΡΠΎ WWW-Authenticate. Π’ΠΎΠ²Π° Π²ΠΈ ΠΊΠ°Π·Π²Π° ΡΠΎΡΠ½ΠΎ ΠΊΠΎΡ ΡΡ
Π΅ΠΌΠ° ΠΎΡΠ°ΠΊΠ²Π° ΡΡΡΠ²ΡΡΡΡ.
Π‘ΡΡΠΏΠΊΠ° 8: ΠΠ°Π»ΠΈΠ΄ΠΈΡΠ°ΠΉΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠΊΠ΅Π½Π°
ΠΠ° JWT ΡΠΎΠΊΠ΅Π½ΠΈ, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡ ΡΠΎΠ²Π°Ρ Π±Π΅Π· Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°, Π·Π° Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΡΠ²ΡΡΠ΄Π΅Π½ΠΈΡΡΠ°:
echo "YOUR_JWT_PAYLOAD_BASE64" | base64 --decode | python3 -m json.tool
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠΎ exp (Unix Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°Ρ). Π‘ΡΠ°Π²Π½Π΅ΡΠ΅ Π³ΠΎ Ρ ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅:
date +%s
ΠΠΊΠΎ exp Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°Ρ, ΡΠΎΠΊΠ΅Π½ΡΡ Π΅ ΠΈΠ·ΡΠ΅ΠΊΡΠ». ΠΠ½Π΅Π΄ΡΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΊ Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π·Π° ΡΠΎΠΊΠ΅Π½ΠΈ Π½Π° Π²Π°ΡΠΈΡ OAuth Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊ, ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠΊΠ΅Π½ΡΡ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅.
Π‘ΡΡΠΏΠΊΠ° 9: ΠΠ΄ΠΈΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ°
ΠΡΠΈ Apache, ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ .htaccess ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡ Ρ
ΠΎΡΡ:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
ΠΠΎΡΠ²ΡΡΠ΄Π΅ΡΠ΅, ΡΠ΅ ΠΏΡΡΡΡ AuthUserFile ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ Π΅ ΡΠ΅ΡΠΈΠΌ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ°. ΠΡΠΈ NGINX, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ Π±Π»ΠΎΠΊ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
location /secure/ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ ΡΠ°ΠΉΠ»ΡΡ .htpasswd ΡΡΠ΄ΡΡΠΆΠ° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ Ρ
Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ htpasswd -v /etc/nginx/.htpasswd username, Π·Π° Π΄Π° ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΏΠ°ΡΠΎΠ»Π° ΡΠΏΡΡΠΌΠΎ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Ρ
Π΅Ρ.
Π‘ΡΡΠΏΠΊΠ° 10: ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΡΡΠ²ΡΡΠ½ΠΈΡΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈ
Π‘ΡΡΠ²ΡΡΠ½ΠΈΡΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΈΡΡΠΈΠ½ΡΠΊΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΡΠΈ Apache:
tail -f /var/log/apache2/error.log | grep 401
ΠΡΠΈ NGINX:
tail -f /var/log/nginx/error.log | grep 401
ΠΠ° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Node.js, Django, Laravel), ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡ ΠΈΠ·Ρ
ΠΎΠ΄ Π½Π° ΠΆΡΡΠ½Π°Π»Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ°ΠΏΠΈΡΡΡ Π² ΠΆΡΡΠ½Π°Π»Π° ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ Π΄Π°Π»ΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ
ΡΡ Π΅ Π±ΠΈΠ» Π»ΠΈΠΏΡΠ²Π°ΡΠ° Π·Π°Π³Π»Π°Π²ΠΊΠ°, Π½Π΅Π²Π°Π»ΠΈΠ΄Π΅Π½ ΡΠΎΠΊΠ΅Π½ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ
ΠΏΡΠΈ ΡΡΡΡΠ΅Π½Π΅ Π² Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
Π‘ΡΡΠΏΠΊΠ° 11: ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ
ΠΠΊΠΎ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π·Π°Π΄ NGINX, Π΄Π΅ΠΉΡΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΠΏΡΠΎΠΊΡΠΈ, ΡΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Authorization ΡΠ΅ ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΠΊΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π°Π³ΠΎΡΠ΅ ΠΏΠΎ Π²Π΅ΡΠΈΠ³Π°ΡΠ°:
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
}
ΠΠ΅Π· proxy_pass_header Authorization, NGINX ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ Π΄ΠΎ Π²Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°ΠΉΠΊΠΈ 401, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ Π³ΡΠ΅ΡΠΊΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π½ΠΎ Π΅ ΠΈΠ·ΡΡΠ»ΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°.
Π‘ΡΡΠΏΠΊΠ° 12: ΠΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° WAF ΠΈ Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°
ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ WAF (ModSecurity, Cloudflare WAF, AWS WAF), ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ Π½ΡΠΊΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΠ²ΠΏΠ°Π΄Π° ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ° Π·Π°ΡΠ²ΠΊΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ Authorization. ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π΄Π°ΠΉΡΠ΅ WAF Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ ΠΈ ΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ. ΠΠΊΠΎ 401 ΠΈΠ·ΡΠ΅Π·Π½Π΅, ΠΏΡΠ΅ΡΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ Π½Π°ΡΡΡΠ°Π²Π°ΡΠΎΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ WAF ΠΈΠ·ΡΡΠ»ΠΎ.
Π‘ΡΡΠΏΠΊΠ° 13: ΠΠ΄ΠΈΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° CDN
Π£Π²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π²Π°ΡΠΈΡΡ CDN Π½Π΅ ΠΊΠ΅ΡΠΈΡΠ° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ 401. Π Cloudflare, Π·Π°Π΄Π°ΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π·Π° ΠΊΠ΅Ρ Π·Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΊΠ΅ΡΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ. Π AWS CloudFront, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Authorization ΠΊΡΠΌ ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΡΡΡΠ²ΡΡ β ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, CloudFront Ρ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²Π°ΡΠΈΡΡ ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΡΡΡΠ²ΡΡ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π²ΡΡΡΠ° 401.
ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅: ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠΈ Π½Π° ΡΡΡΠ²ΡΡΠΈ
ΠΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ API β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ Π² ΡΡΠ΅Π΄Π° Π·Π° VPS Π₯ΠΎΡΡΠΈΠ½Π³ ΠΈΠ»ΠΈ Π½Π° Dedicated ΡΡΡΠ²ΡΡ β ΡΠ΅Π·ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Ρ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ 401 Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π°Ρ Π΄ΠΎ Π²Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈΡΠ΅
ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΈΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈ Π±Π΅Π· Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅. ΠΠ° OAuth 2.0, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΡΠ°ΡΠΊΠΎΡΡΠ°ΠΉΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ (15β60 ΠΌΠΈΠ½ΡΡΠΈ), ΡΡΡΠ΅ΡΠ°Π½ΠΈ Ρ Π΄ΡΠ»Π³ΠΎΡΡΠ°ΠΉΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅. ΠΠ½Π΅Π΄ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ: Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°ΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠΊΠ΅Π½ΡΡ Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΈΠΌΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 20% ΠΎΡ ΠΎΡΡΠ°Π²Π°ΡΠΈΡ ΡΠΈ ΠΆΠΈΠ²ΠΎΡ, Π° Π½Π΅ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π²Π΅ΡΠ΅ Π΅ ΠΈΠ·ΡΠ΅ΠΊΡΠ».
Access Token TTL: 15 minutes
Refresh Token TTL: 30 days (rotated on each use)
Refresh trigger: < 3 minutes remaining on access token
ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° JWT, Π²Π½Π΅Π΄ΡΠ΅ΡΠ΅ ΡΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅. ΠΡΠΈ ΡΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ½ΠΈΡ ΠΊΠ»ΡΡ Π·Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅, Π·Π°ΠΏΠ°Π·Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡ Π²Π°Π»ΠΈΠ΄Π΅Π½ Π·Π° Π΅Π΄ΠΈΠ½ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΆΠΈΠ²ΠΎΡ Π½Π° ΡΠΎΠΊΠ΅Π½Π°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈΡΠ΅ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π° Π½Π΅ Π±ΡΠ΄Π°Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π°Π½ΡΠ»ΠΈΡΠ°Π½ΠΈ.
Π‘ΠΌΠΈΡΠ»Π΅Π½ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ ΠΏΡΠΈ Π³ΡΠ΅ΡΠΊΠΈ
ΠΡΠ³ΠΎΠ²ΠΎΡΡΡ 401 ΡΡΡΠ±Π²Π° Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°:
{
"error": "invalid_token",
"error_description": "The access token expired at 2024-01-15T10:30:00Z",
"error_uri": "https://api.example.com/docs/authentication"
}
ΠΠ΅ΡΡΠ½ΠΈΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ 401, ΠΊΠΎΠΈΡΠΎ Π²ΡΡΡΠ°Ρ ΡΠ°ΠΌΠΎ ΠΊΠΎΠ΄ Π·Π° ΡΡΠ°ΡΡΡ, ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π²Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° Π³Π°Π΄Π°ΡΡ ΠΏΡΠΈΡΠΈΠ½Π°ΡΠ° Π·Π° Π½Π΅ΡΡΠΏΠ΅Ρ
Π°, Π΄ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°ΠΉΠΊΠΈ ΡΠ΅ΠΆΠ΅ΡΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ°.
Π Π΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅
Π Π΅Π³ΠΈΡΡΡΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π½Π΅ΡΡΠΏΠ΅Ρ
ΠΏΡΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ: Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°Ρ, IP Π°Π΄ΡΠ΅Ρ, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π°Π³Π΅Π½Ρ, Π·Π°ΡΠ²Π΅Π½ ΡΠ΅ΡΡΡΡ ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° Π½Π΅ΡΡΠΏΠ΅Ρ
Π°. ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° Π°Π½ΠΎΠΌΠ°Π»Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ β ΡΠΊΠΎΠΊ Π² 401 ΠΎΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅Π½ IP ΡΠΊΠ°Π·Π²Π° ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΈΠ»ΠΈ Π°ΡΠ°ΠΊΠ° Ρ ΠΏΡΠ»Π½Π΅Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° Dedicated ΡΡΡΠ²ΡΡΠΈ, ΠΈΠΌΠ°Ρ ΠΏΡΠ»Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΆΡΡΠ½Π°Π»ΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ Π½ΠΈΠ²ΠΎ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²Π½Π΅Π΄ΡΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈ Π·Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
Π‘ΠΈΠ³ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΡΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ. ΠΠΊΠΎ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ Π²Π»ΠΈΠ·Π°Π½ΠΈΡ, SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡΡ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π΅Π½ β ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Basic Auth ΠΏΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ HTTP ΠΈΠ·Π»Π°Π³Π° Base64-ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΠΎΡΠΊΡΠΈΡ ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
ΠΠ±Ρ
Π²Π°Ρ ΠΈ ΡΠΎΡΠ°ΡΠΈΡ Π½Π° API ΠΊΠ»ΡΡΠΎΠ²Π΅
ΠΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ API ΠΊΠ»ΡΡΠΎΠ²Π΅ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΎΠ±Ρ
Π²Π°Ρ. ΠΠ½Π΅Π΄ΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΡΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΠΎΡΠΈΠ³ΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΠΎΡΠ°ΡΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠΌΠ΅Π½ΡΡ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π±Π΅Π· ΠΏΡΠ΅ΡΡΠΎΠΉ. ΠΡΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π°ΠΉΡΠ΅ Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΡΠ΅Π· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½ ΠΊΠ°Π½Π°Π».
Π’Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΡΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π² CI/CD
ΠΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° ΠΏΠΎΡΠΎΡΠΈ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π² ΡΠ²ΠΎΡ ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅. ΠΠ°Π±ΠΎΡ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°ΠΆΠ½ΡΠ²Π° Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΡΠ΅ΠΊΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ, Π»ΠΈΠΏΡΠ²Π°ΡΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠΈ ΠΈ ΠΎΡΠΌΠ΅Π½Π΅Π½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΡΠ΅ ΡΠ»ΠΎΠ²ΠΈ ΡΠ΅Π³ΡΠ΅ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ Π΄ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ. Π’ΠΎΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ ΡΠ»Π΅Π΄ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π·Π°ΡΡΠ³Π°ΡΠΈ middleware Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅.
ΠΡΠ΅ΡΠΊΠΈ 401 Π² ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ
WordPress
WordPress Π²ΡΡΡΠ° 401 Π½Π° ΡΠ²ΠΎΡ REST API (/wp-json/), ΠΊΠΎΠ³Π°ΡΠΎ Application Passwords ΡΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ (Wordfence, iThemes Security) Π±Π»ΠΎΠΊΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ REST API. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Settings > Permalinks ΠΈ Π·Π°ΠΏΠ°Π·Π΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ β ΡΠΎΠ²Π° ΠΈΠ·ΡΠΈΡΡΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°ΡΡΡΠ°Ρ ΠΊΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅. ΠΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ WordPress Π½Π° VPS Ρ cPanel, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π»ΠΈ mod_rewrite Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΈ Π΄Π°Π»ΠΈ .htaccess Π΅ Π·Π°ΠΏΠΈΡΠ²Π°Π΅ΠΌ.
cPanel ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π° ΡΠ΅Π± Ρ
ΠΎΡΡΠΈΠ½Π³
ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈΡΠ΅, Π·Π°ΡΠΈΡΠ΅Π½ΠΈ Ρ ΠΏΠ°ΡΠΎΠ»Π°, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π· cPanel, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ mod_authn_file Π½Π° Apache. ΠΠΊΠΎ ΠΏΡΡΡΡ Π½Π° ΡΠ°ΠΉΠ»Π° .htpasswd Π² Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡ .htaccess Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ΅Π½ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ (ΡΠ΅ΡΡΠΎ ΡΠ»Π΅Π΄ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠΈ), ΠΏΡΡΡΡ ΡΠ΅ Π½Π°ΡΡΡΠ°Π²Π° ΠΈ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° Π²ΡΡΡΠ° 401. ΠΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΡΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΈΡΠ΅ ΠΏΡΡΠΈΡΠ° ΡΠ»Π΅Π΄ Π²ΡΡΠΊΠ° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ. Π‘ΡΠ΅Π΄ΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ VPS ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΡΠΈΡΠ° Π±Π΅Π· ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠΈΠΊΠ΅Ρ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°.
ΠΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈ SMTP ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅
SMTP ΡΡΡΠ²ΡΡΠΈΡΠ΅ Π²ΡΡΡΠ°Ρ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π½ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° 401 (535 Authentication credentials invalid), ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π° ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ° Π³ΡΠ΅ΡΠ½ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ²ΡΡΡΡ ΠΈΠ·ΠΈΡΠΊΠ²Π° STARTTLS ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΎΠΏΠΈΡΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅. ΠΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Email Ρ
ΠΎΡΡΠΈΠ½Π³, ΡΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ Π²Π°ΡΠΈΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ (PLAIN, LOGIN ΠΈΠ»ΠΈ CRAM-MD5) ΠΈ ΡΠ΅ TLS Π΅ Π½Π°Π»ΠΎΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ.
ΠΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠΎΠ±ΠΈΠ»Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Ρ Π³ΡΠ΅ΡΠΊΠΈ 401 ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° ΡΠΈ Π² ΡΠ΅Π± β ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΡΡ ΡΠΎΠΊΠ΅Π½ Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π°Π½ΡΠ»ΠΈΡΠ° ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ°, Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½ΡΠΌΠ° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ²Π° Π΄ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎ API ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅. ΠΠ½Π΅Π΄ΡΠ΅ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π΅Π½ HTTP ΠΏΡΠ΅Ρ
Π²Π°ΡΠ°Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π°Π²Ρ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ 401, ΠΎΠΏΠΈΡΠ²Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΡΠΎΡΠ½ΠΎ Π²Π΅Π΄Π½ΡΠΆ ΠΈ Π°ΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ΡΠΎ ΡΡΡΠΎ Π²ΡΡΠ½Π΅ 401, ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΊΡΠΌ Π΅ΠΊΡΠ°Π½Π° Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Ρ ΡΡΠ½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΡΡΠΈΡΠ° Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ: ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π°ΡΠ°ΡΠ° Π³ΡΠ΅ΡΠΊΠ° 401
Π‘ΠΈΠΌΠΏΡΠΎΠΌ
ΠΠ°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½Π° ΠΏΡΠΈΡΠΈΠ½Π°
ΠΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
—
—
—
401 ΠΏΡΠΈ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ
Π’ΠΎΠΊΠ΅Π½ΡΡ Π΅ ΠΈΠ·ΡΠ΅ΠΊΡΠ» ΠΈΠ»ΠΈ ΠΎΡΠΌΠ΅Π½Π΅Π½
ΠΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ²ΡΡΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ `exp` Π½Π° ΡΠΎΠΊΠ΅Π½Π°; Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°ΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅
401 ΡΠ°ΠΌΠΎ Π² Π±ΡΠ°ΡΠ·ΡΡΠ°, Π½Π΅ Π² curl
ΠΠΎΠ²ΡΠ΅Π΄Π΅Π½Π° Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠ° ΠΈΠ»ΠΈ Π½Π°ΠΌΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅
ΠΠ·ΡΠΈΡΡΠ΅ΡΠ΅ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈΡΠ΅; ΡΠ΅ΡΡΠ²Π°ΠΉΡΠ΅ Π² ΠΈΠ½ΠΊΠΎΠ³Π½ΠΈΡΠΎ
401 ΡΠ°ΠΌΠΎ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ IP
ΠΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° ΠΎΡ Π·Π°ΡΠΈΡΠ½Π° ΡΡΠ΅Π½Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° IP
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ Π½Π° WAF; Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ Π² Π±Π΅Π»ΠΈΡ ΡΠΏΠΈΡΡΠΊ Π°ΠΊΠΎ Π΅ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΠΎ
401 ΡΠ»Π΅Π΄ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° ΡΡΡΠ²ΡΡΠ°
ΠΠ°ΡΡΡΠ΅Π½ ΠΏΡΡ `.htpasswd`
ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΏΡΡΡ `AuthUserFile` Π² `.htaccess`
401 ΠΏΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° OPTIONS
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° CORS
ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ `Authorization` ΠΊΡΠΌ `Access-Control-Allow-Headers`
401 Π²ΡΠΏΡΠ΅ΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ
ΠΠ±ΡΠ°ΡΠ΅Π½ ΠΏΡΠΎΠΊΡΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ
ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ `proxy_pass_header Authorization` ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° NGINX
401 ΠΏΡΠΈ CDN ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ
CDN ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° ΠΊΠ΅ΡΠΈΡΠ°Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ 401
ΠΠ°ΠΎΠ±ΠΈΠΊΠΎΠ»Π΅ΡΠ΅ ΠΊΠ΅ΡΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈ
401 ΡΠ»Π΅Π΄ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ
ΠΠ°ΡΡΡΠ°Π²Π°ΡΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π² middleware Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅
ΠΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΠΆΡΡΠ½Π°Π»Π° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅; ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈ
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ ΠΏΡΠ΅Π΄ΠΈ Π΅ΡΠΊΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ° 401
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΡΠΈΠΊΠ΅Ρ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΈΠ»ΠΈ Π΄Π° Π΅ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΊΡΠΌ Π²Π°ΡΠΈΡ Π΅ΠΊΠΈΠΏ ΠΏΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°:
Π£Π»ΠΎΠ²Π΅Π½ ΡΡΡΠΎΠ²ΠΈΡΡ HTTP ΠΎΡΠ³ΠΎΠ²ΠΎΡ Ρ curl -v ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° WWW-Authenticateexp ΡΠΏΡΡΠΌΠΎ ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ°Authorization ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΡΡ
Π΅ΠΌΠ°ΡΠ°, ΡΠ΅ΠΊΠ»Π°ΠΌΠΈΡΠ°Π½Π° ΠΎΡ ΡΡΡΠ²ΡΡΠ°AuthorizationAuthorizationΠ§ΠΠ
ΠΠ°ΠΊΠ²Π° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ HTTP 401 ΠΈ HTTP 403?
401 ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ²ΡΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΠΊΠΎΠΉ ΡΡΠ΅ Π²ΠΈΠ΅ β ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π»ΠΈΠΏΡΠ²Π° ΠΈΠ»ΠΈ Π΅ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎ. 403 ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΡΠ²ΡΡΡΡ Π·Π½Π°Π΅ ΠΊΠΎΠΉ ΡΡΠ΅ Π²ΠΈΠ΅, Π½ΠΎ Π΅ ΡΠ΅ΡΠΈΠ», ΡΠ΅ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΡΡΡΠ°. ΠΠΎΠΏΡΠ°Π²Π΅ΡΠ΅ 401, ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ; ΠΏΠΎΠΏΡΠ°Π²Π΅ΡΠ΅ 403, ΠΊΠ°ΡΠΎ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ°.
ΠΠ°ΡΠΎ ΠΌΠΎΡΡ API Π²ΡΡΡΠ° 401 Π΄ΠΎΡΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½?
ΠΠ°ΠΉ-ΡΠ΅ΡΡΠΈΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ ΡΠ° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½Π° (ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠ²ΡΡΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ exp), ΡΠ°Π·ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΡΡΠ²ΡΡ (ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ NTP), ΡΠΎΡΠΈΡΠ°Π½ ΠΊΠ»ΡΡ Π·Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅, Π°Π½ΡΠ»ΠΈΡΠ°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ, ΠΈΠ»ΠΈ Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Authorization ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π° ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΠΏΡΠΎΠΊΡΠΈ ΠΈΠ»ΠΈ CDN ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ Π΄ΠΎ ΠΈΠ·Ρ
ΠΎΠ΄Π½ΠΈΡ ΡΡΡΠ²ΡΡ.
ΠΠΎΠΆΠ΅ Π»ΠΈ Π³ΡΠ΅ΡΠΊΠ° 401 Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΡΡΡΠ²ΡΡΠ°, Π° Π½Π΅ ΠΎΡ Π³ΡΠ΅ΡΠΊΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°?
ΠΠ°. ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ ΡΠ°ΠΉΠ» .htaccess, Π±Π»ΠΎΠΊ auth_basic Π½Π° NGINX, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ ΠΊΡΠΌ Π³ΡΠ΅ΡΠ½ΠΎΡΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΠΏΡΠΎΠΊΡΠΈ, ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Ρ Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ° Authorization, ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π° WAF, Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΌΠΎΠ³Π°Ρ Π²ΡΠΈΡΠΊΠΈ Π΄Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π°Ρ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ 401 Π΄ΠΎΡΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ.
ΠΠ°ΠΊ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡ Π³ΡΠ΅ΡΠΊΠΈ 401, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅?
ΠΠ½Π΅Π΄ΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ β Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΡΡΠ°Π²Π°ΡΠΈΡ ΠΆΠΈΠ²ΠΎΡ Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΠΈ Π³ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅, Π° Π½Π΅ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°. ΠΠ° OAuth 2.0, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π·Π° ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π½ΠΎΠ² ΡΠΎΠΊΠ΅Π½ Π·Π° Π΄ΠΎΡΡΡΠΏ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ΠΊΡΡΠΈΡΡ ΠΈΠΌΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 20% ΠΎΡ ΠΎΡΡΠ°Π²Π°ΡΠΎΡΠΎ ΡΠΈ TTL. ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π΅Π½ ΠΏΡΠ΅Ρ Π²Π°ΡΠ°Ρ Π½Π° HTTP ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ, ΠΊΠΎΠΉΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ 401, ΠΊΠ°ΡΠΎ ΠΎΠΏΠΈΡΠ²Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½Π° ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ ΠΎΠΏΠΈΡ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°.
ΠΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ Π»ΠΈ ΠΏΠΎΠΏΡΠ°Π²Ρ Π³ΡΠ΅ΡΠΊΠ° 401 Π² Π±ΡΠ°ΡΠ·ΡΡΠ°?
Π‘Π°ΠΌΠΎ Π°ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π΅ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½Π° ΠΈΠ»ΠΈ ΠΎΡΡΠ°ΡΡΠ»Π° ΡΠ΅ΡΠΈΠΉΠ½Π° Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠ°. ΠΠΊΠΎ 401 Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½Π° ΠΎΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΡΡΡΠ²ΡΡΠ°, ΠΈΠ·ΡΠ΅ΠΊΡΠ» API ΠΊΠ»ΡΡ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ ΠΎΡ Π·Π°ΡΠΈΡΠ½Π° ΡΡΠ΅Π½Π°, ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° Π΅ΡΠ΅ΠΊΡ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΠΈΠ½ΠΊΠΎΠ³Π½ΠΈΡΠΎ ΠΊΠ°ΡΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½Π° ΡΡΡΠΏΠΊΠ° β Π°ΠΊΠΎ 401 ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π² ΠΈΠ½ΠΊΠΎΠ³Π½ΠΈΡΠΎ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, Π° Π½Π΅ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° Π±ΡΠ°ΡΠ·ΡΡΠ°.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ