

Token Based Authentication Çıkış Yapma Olayı
-
Sistemde token based authentication kullanıyorum, kafama birkaç birşey takıldı.
Veritabanında bir key tutuyorum ve kullanıcı logout olduğunda key' i kaldırıyorum.
Böylece data erişim yetkisi kalmıyor, fakat adam mobilden daha önce giriş yapmışsa;
bilgisayardan çıkış yaptığında ben key' i sildiğim için otomatikman mobilden de çıkış yapmış oluyor.
Hatta tüm cihazlardan..
Nasıl önüne geçebilirim ?
-
Veritabanında tuttuğun keyin yanına bir sütun daha ekleyip cihazla alakalı bir id tutabilirsin hocam. Tabi kontrolleride buna göre değiştirmen gerekiyor
Yazilimci tarafından 31/May/16 12:21 tarihinde düzenlenmiştir -
aynen 3lü token tutmalısın
0 token id 1 giriş yapılan uye 2 giriş yapılan browser 3 token
hangi browserdan çıkış yaptıysa onun tokenini silmen lazım,
hatta tüm cihazlardan oturumu kapat butonu koyarsın tüm tokenleri siler vesaire.
kofcu tarafından 31/May/16 15:47 tarihinde düzenlenmiştir -
Aynen öyle :D Token içine bilgi göm abi bende bununla alakalı bi sistem yaptım. Benimki de öyle. Mesela çıkış yaptığında tokeni siliyorum . 3 adet Tokenim var (GirişTokeni.WebToken.AndroidToken). Mesela android den çıkış yaptığında giriş tokeni ve android tokeni siliyorum. ondan snra Web'de istekte bulununca arka planda tekrar bi düzenleme ile giriş tokenini dolduruyorum Web den istekte bulunuyor. Webden de çıkınca 3 tokeni de sıfırlıyorum Android den girince Giriş ve Android tokeni dolduruyorum Web Tokeni boş kalıyor. gibi bi sistem yaptım . Ama her çıkışta Giriş tokenini sıfırlıyorum.
-
Facebook gibi bir sürü yerden aynı anda ulaşılabilir hesap olsun istiyorsan oturumlar(sessions) tablosu yapmalısın.
id, code, ip, agent, user_id
Kontrol için: SELECT user_id FROM sessions WHERE code = ? and ip = ? and agent = ?;
Sadece o oturumu kapatmak için: DELETE FROM sessions WHERE code = ?;
Tüm oturumları kapatmak için: DELETE FROM sessions WHERE user_id = ?;
Edit: Sanırım sen paso sisteminin durumu değiştiriyorsun. Projelerine bitiş tanımla. Zaman olabilir, süre olabilir. Bu da böyle olacak amk denilebilir. Bir kerede en iyisi çıkmaz.
PcK0 tarafından 31/May/16 18:26 tarihinde düzenlenmiştir -
PcK0 bunu yazdı
Facebook gibi bir sürü yerden aynı anda ulaşılabilir hesap olsun istiyorsan oturumlar(sessions) tablosu yapmalısın.
id, code, ip, agent, user_id
Kontrol için: SELECT user_id FROM sessions WHERE code = ? and ip = ? and agent = ?;
Sadece o oturumu kapatmak için: DELETE FROM sessions WHERE code = ?;
Tüm oturumları kapatmak için: DELETE FROM sessions WHERE user_id = ?;
hocam senin yöntem de mantıklı geldi ama mesela telefonumla oturum açtım evdeki kablosuz ağa bağlıyken, sonra gittim cafedeki kablosuz ağa bağlandım, o zaman evde açtığım oturuma cafeden girmem için tekrar giriş yapmam gerekmez mi?
-
PcK0 bunu yazdı
Facebook gibi bir sürü yerden aynı anda ulaşılabilir hesap olsun istiyorsan oturumlar(sessions) tablosu yapmalısın.
id, code, ip, agent, user_id
Kontrol için: SELECT user_id FROM sessions WHERE code = ? and ip = ? and agent = ?;
Sadece o oturumu kapatmak için: DELETE FROM sessions WHERE code = ?;
Tüm oturumları kapatmak için: DELETE FROM sessions WHERE user_id = ?;
Edit: Sanırım sen paso sisteminin durumu değiştiriyorsun. Projelerine bitiş tanımla. Zaman olabilir, süre olabilir. Bu da böyle olacak amk denilebilir. Bir kerede en iyisi çıkmaz.
Yok hocam, şu anda işler durumda zaten hali hazırda bitirmiş olduğum proje bu.
Sadece Rest API ve Token based authentication' a çevirmek istedim. Ben handler ve session kullanmıştım.
Boş zamanlarım da çeviriyordum arka taraftan. İşyerindekiler bilmiyor :D O yüzden ağır işliyorum :D
Çok takıntılıyım bu konuda, en iyisi olana kadar 10 kere yazıyorum ama artık bi tane çıkarıyorum sonra arkada bunu yazıyorum.
Aslında akıllanmadım da deadline' ı kısa tutunca bizimkiler, işleri görülsün diye yazmıştım. Şimdi geliştirme gelince hem onu hem de bunu geliştiriyorum.
Parelel çalışıyorum yani.
Zaten bu bitmek üzere artık, bunu aktif edip, ötekini rafa kaldırıcam.
ozgunlu tarafından 31/May/16 18:34 tarihinde düzenlenmiştir -
örnek her login farklı session id olacak şekilde session id karşılığında session verilerini hafızada veya nosql de tut. farklı yerden iki aynı kullanıcı girsede session idler farklı olucağından karışmıcak.
kablosuz ağ örneği için ise sorgu geldiğinde session idsine karşılık gelen verideki ilk login hangi ip den yapılmış şuandaki gelen sorgu hangi ip vs. vs. kontroller yapabilirsin
detCode tarafından 31/May/16 18:53 tarihinde düzenlenmiştir -
kofcu bunu yazdıPcK0 bunu yazdı
Facebook gibi bir sürü yerden aynı anda ulaşılabilir hesap olsun istiyorsan oturumlar(sessions) tablosu yapmalısın.
id, code, ip, agent, user_id
Kontrol için: SELECT user_id FROM sessions WHERE code = ? and ip = ? and agent = ?;
Sadece o oturumu kapatmak için: DELETE FROM sessions WHERE code = ?;
Tüm oturumları kapatmak için: DELETE FROM sessions WHERE user_id = ?;
hocam senin yöntem de mantıklı geldi ama mesela telefonumla oturum açtım evdeki kablosuz ağa bağlıyken, sonra gittim cafedeki kablosuz ağa bağlandım, o zaman evde açtığım oturuma cafeden girmem için tekrar giriş yapmam gerekmez mi?
Evet doğru. WHERE code = ? and agent = ? yapmamız kullanıcıyı dolaşımda sıkıntıya düşürmeden sistemi kullandırır. Zaten örnekti bu. Ip güvenlikleri üzerinde güzel denetim sağlayacağız dersek kıçı kırık tek ip kolonu zaten bize yetmeyecektir. En son ip değişikliği ne zaman yapıldı? En son değişen ipnin bölgesi? Bu noktalar çok mu uzak? İp değiştirdi kullanıcı ama hala eski ipden istek geliyor o zaman bu bir hack olabilir mi? gibi bir sürü daha durum incelemesi gerekiyor. Yani tek ip kolonu ile sistemin göte gelmesi normal :)
-
token tablosunu user in sütununa yazma token tablon ayrı olsun.
tokenId userId token createdDate updateDate şeklinde.
login olunduğu an token tablosuna eklersin yukarıdakileri. her login olunduğunda yeni token oluşturup eklersin böylece diğer yerlerden çıkış yapınca sadece o tokenı oluşturursun. her o tokenı bu tablodan kontrol ettiğinde updateDate i güncellersin. birde kontrol servisin olur. createdDate ile updateDate i kontrol edersin updateDate eski olanları silersin. sonuçta adam illa çıkış yap deyip çıkmayabilir. boşuna yer kaplamasın dbde