Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π·ΠΈΠ½ΡƒΠŸΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ
Найти Π² Π”Π·Π΅Π½Π΅

πŸ›‘οΈ Torii: надёТная аутСнтификация для Rust Π±Π΅Π· привязки ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ Ρ€Π°Π· сталкивался с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π½Π°Π΅Ρ‚, насколько Π²Π°ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ часто Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ сСрвисы Π²Ρ€ΠΎΠ΄Π΅ Auth0, Clerk ΠΈΠ»ΠΈ Firebase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π΅Ρ€ΡƒΡ‚ Π½Π° сСбя всю Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ боль с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ доступом. Однако с Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: потСря контроля Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвисов ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, вопросы ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ бСзопасности. НСдавно Π½Π° GitHub появился ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Torii β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ-нСзависимый инструмСнт для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° языкС Rust, Π΄Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ процСссом Π²Ρ…ΠΎΠ΄Π° ΠΈ рСгистрациСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. 🎯 ΠŸΠΎΡ‡Π΅ΠΌΡƒ Torii β€” это интСрСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅? ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Torii ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сразу нСсколькими ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ аспСктами: 🚧 Π’Π°ΠΆΠ½Ρ‹ΠΉ нюанс: статус Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠΊΠ° находится Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ рСкомСндуСтся для ΠΏΡ€ΠΎΠ΄Π°ΠΊ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ Ρ€Π°Π· сталкивался с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π½Π°Π΅Ρ‚, насколько Π²Π°ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ часто Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ сСрвисы Π²Ρ€ΠΎΠ΄Π΅ Auth0, Clerk ΠΈΠ»ΠΈ Firebase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π΅Ρ€ΡƒΡ‚ Π½Π° сСбя всю Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ боль с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ доступом. Однако с Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: потСря контроля Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… сСрвисов ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, вопросы ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ бСзопасности.

НСдавно Π½Π° GitHub появился ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰ΠΈΠΉ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: Torii β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ-нСзависимый инструмСнт для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° языкС Rust, Π΄Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ процСссом Π²Ρ…ΠΎΠ΄Π° ΠΈ рСгистрациСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

🎯 ΠŸΠΎΡ‡Π΅ΠΌΡƒ Torii β€” это интСрСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅?

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Torii ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ сразу нСсколькими ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ аспСктами:

  • πŸ” ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…:
    Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ сторонних сСрвисов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Auth0 ΠΈΠ»ΠΈ Clerk, Π³Π΄Π΅ ваши Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² ΠΎΠ±Π»Π°ΠΊΠ΅ Π½Π° сСрвСрах ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Torii позволяСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° собствСнных рСсурсах, обСспСчивая ΠΏΠΎΠ»Π½ΡƒΡŽ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • πŸ”Œ ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°:
    Torii Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Rust, Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Ρ‹ Actix-web, Rocket ΠΈΠ»ΠΈ Axum. Π’Ρ‹ сами Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.
  • 🌐 ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OAuth ΠΈ OIDC:
    Π£ΠΆΠ΅ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ OAuth 2.0 ΠΈ OpenID Connect, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСсколькими ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°ΠΌΠΈ (Google, GitHub, Facebook ΠΈ Π΄Ρ€.).
  • πŸ”‘ Passwordless ΠΈ Passkey:
    ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ соврСмСнный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с использованиСм passkeys (WebAuthn), Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ слабых ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ.
  • πŸ—ƒοΈ Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…:
    Π’ качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… доступны SQLite ΠΈ PostgreSQL, Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ находится ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° MySQL.

🚧 Π’Π°ΠΆΠ½Ρ‹ΠΉ нюанс: статус Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠΊΠ° находится Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ рСкомСндуСтся для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-использования. На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚:

  • βœ… ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…: SQLite ΠΈ PostgreSQL
  • 🚧 MySQL – Π² процСссС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
  • πŸ›‘οΈ ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ» нСзависимый Π°ΡƒΠ΄ΠΈΡ‚ бСзопасности, ΠΈ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ риски использования Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½Π΅ Π»Π΅ΠΆΠ°Ρ‚ Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ….

Однако это Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Torii ΠΌΠ΅Π½Π΅Π΅ интСрСсным β€” Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ шанс для сообщСства Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‘ Π΅Ρ‰Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅.

βš™οΈ Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅?

На тСхничСском ΡƒΡ€ΠΎΠ²Π½Π΅ Torii состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

  • πŸ“¦ torii-core β€” ядро Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ основныС интСрфСйсы для управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, сСссиями ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ.
  • πŸ“§ torii-auth-password β€” ΠΏΠ»Π°Π³ΠΈΠ½ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ пароля (поддСрТиваСтся классичСская схСма Β«Π»ΠΎΠ³ΠΈΠ½-ΠΏΠ°Ρ€ΠΎΠ»ΡŒΒ» с бСзопасным Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Ρ‡Π΅Ρ€Π΅Π· bcrypt ΠΈΠ»ΠΈ argon2).
  • πŸ”— torii-auth-oauth β€” ΠΏΠ»Π°Π³ΠΈΠ½ OAuth2 ΠΈ OIDC, для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Google ΠΈΠ»ΠΈ GitHub).
  • πŸ”‘ torii-auth-passkey β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° WebAuthn ΠΈ passkeys, стандарта Π±Π΅Π·ΠΏΠ°Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ криптографичСскиС ΠΊΠ»ΡŽΡ‡ΠΈ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° устройствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ:

use torii::{Torii, plugins::{PasswordAuth, OAuthPlugin}};
use torii_storage_postgres::PostgresStorage;

#[tokio::main]
async fn main() {
let storage = PostgresStorage::new("postgres://username:password@localhost/dbname").await.unwrap();

let torii = Torii::builder()
.storage(storage)
.plugin(PasswordAuth::default())
.plugin(OAuthPlugin::new(vec!["google", "github"]))
.build();

// Запуск сСрвиса
torii.run().await.unwrap();
}

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Ρ‘Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ: ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

πŸ’‘ Π›ΠΈΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅: ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» ΠΈ пСрспСктивы

Torii прСдставляСтся ΠΌΠ½Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых пСрспСктивных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² области Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Rust. ОсобСнно это Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ сСгодня, ΠΊΠΎΠ³Π΄Π° вопросы ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… становятся всё острСС. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ постСпСнно возвращаСмся ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ вновь ΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ собствСнными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ инфраструктурой, Π½Π΅ ТСртвуя удобством использования ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ.

Однако успСх Ρ‚Π°ΠΊΠΎΠ³ΠΎ инструмСнта Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ зависит ΠΎΡ‚ сообщСства ΠΈ Ρ‚ΠΎΠ³ΠΎ, насколько Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅, ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ с тСстированиСм ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ.

🌟 Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ прилоТСния Π½Π° Rust ΠΈ вас интСрСсуСт Ρ‚Π΅ΠΌΠ° Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Torii. И Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½Π΅, это Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для участия ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΠΈ.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки:

Π–Π΅Π»Π°ΡŽ Π²Π°ΠΌ бСзопасной ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ! πŸš€