OmniAuth kirishini proksi orqali kuzatish
Proxy kerak bo'lgan so'rovlarda uni sozlash uchun brauzer yo'naltirishini va Rails tomonidagi token almashinuvini kuzatib boring.
Foydalanuvchi “Kirish” tugmasini bosadi, provayder sahifasiga yetib boradi va Rails ga qaytadi. Keyingi qadam baribir muvaffaqiyatsiz bo'lishi mumkin, chunki u Rails serveridan yangi ulanish ochadi.
browser → provider authorization page → browser callback to Rails
Rails → provider token endpoint → Rails
Brauzer avtorizatsiya yo'naltirishini o'zining tarmoq sozlamalari bilan bajaradi. Rails esa orqa kanal token almashinuvini o'rnatilgan OmniAuth strategiyasi tanlagan HTTP klienti bilan amalga oshiradi. Korporativ proksi orqasida ishlayotgan ishchi provayderga yuboradigan so'rovlarida shu yo'lni talab qiladi.
OAuth 1.0 da ham foydalanuvchi ruxsat berishidan oldin server tomonida so'rov tokeni qadami bor. OAuth 2.0 ning avtorizatsiya kodi oqimida callback dan keyin o'zining token almashinuvi mavjud. Aniq tartib strategiyaga bog'liq, ammo brauzer va ilova serveri alohida boshlanish nuqtalari bo'lib qoladi.
Klient sozlamalarini toping
Strategiyani uning tokeni va provayder API so'rovlarini yuboradigan HTTP klientigacha kuzatib boring. O'sha klientning hujjatlashtirilgan proksi parametridan foydalaning. Ba'zi strategiyalar klient parametrlarini OAuth kutubxonasiga uzatadi; boshqalari uning ostida HTTP ulanishini sozlaydi. Bir strategiya qabul qiladigan parametr avtomatik ravishda umumiy OmniAuth parametri bo'lmaydi.
Provayderning avtorizatsiya, token va callback URL lari uning haqiqiy xizmatlarini tavsiflab tursin. Chiqish proksisi provayderga yetib borish uchun transport sozlamasi, u callback manzilining o'rnini bosmaydi va OAuth so'rov parametrlariga qo'shiladigan maydon emas.
Kirishni kuzatayotganda oxirgi tugallangan qadamni belgilang. Ko'rsatilgan provayder kirish sahifasi brauzer yo'li ishlaganini isbotlaydi. Rails qabul qilgan callback brauzer qaytganini isbotlaydi. Keyingi token so'rovi esa Rails jarayonidan kelayotgan proksi ulanishi, chaqiruv yoki provayder javobini tekshirish joyidir.