3 farklı sunucudan birinde login olunca diğerlerinde de login olmasını nasıl yapabilirim?

pazar pazar güzel bir soru sorayım. Şimdi 3 ayrı sunucuda 3 ayrı sistem var. Şimdi 1 inci sunudaki sisteme yada bu 3 ünden her hangi birinde kullanici login olunca dierlerinde tekrar tekrar login olmamasını nasil sağlarız. Lütfen yorumda şu olabilir gibi yapabilirsinden çok yöntem bu veya ben böyle calıştırıyorum gibi cevaplara ihtiyacım var. Aklımda bir yöntem var fakat biraz dolaylı bu yüzden en son onu yapacagım. Herkese iyi pazarlar.

S
0 kişi takip ediyor.
Misafir olarak yayınla
18
18 CEVAP

Login kayıtlarını mysql tutuyor bu yüzden sanırım sql ile yapabilirsin diye tahmin yürütüyorum

Y

zaten login kayitları SQL erişimi gerektirecek fakat 3 ayrı sistemin db yapisi farklı mesela 1. sunucu kurumsal 2. e ticaret gibi dbleri fazla kariştirmak istemedim

Salih Ozanlagan 6 yıl

Genelde login sayfaarı cookie veya session ile oluyor. Bu yüzden sadece aynı pc de isen cookieleri 1 sunucudan giriş yapınca, diğer sunuculara da cookie leri yazdırırsan. Ancak böyle bir şey yapılabilir.

Ramazan Üçkardeş 6 yıl

Sessionları ortak bir sunucuda depolamalısınız. Ama bu iş biraz yaş.
En temiz yol session yönetimini veri tabanına taşıyıp, auth için ortak veri tabanını kullanmak

H

ortak derken mesela 1. sunucudaki veri tabanini dierleri de mi kullanacak ?

Salih Ozanlagan 6 yıl

Sadece authentication işlemi yani kullanıcı yönetimi, girişi işlemlerini yöneten tablolar ortak bir veritabanında tutulacak. Üçü de buraya remote olarak bağlanacak. Sessionların kopya kayıtlarını burada bir tablo da aes256 ile şifreli tutun. Sonra tüm sunucularda önce local sessionlara göre sonra uzak veritabanından kontrol yapın giriş için.

Hüseyin Yarol 6 yıl

mesela örnek olarak buna benzer bir şey yapiyor tam birebir degil ama facebook kendi üzerinden dier siteleri loginleyebiliyor.

S

facebook’ta access token, OAuth mantığı var o tamamen başka bir şey.

Hüseyin Yarol 6 yıl

anladım yukarıda dedigin mantikla birsey kurmaya çalışacagım

Salih Ozanlagan 6 yıl

Yani istediğiniz bir siteden yapılan girişi diğer sitede yakalamak ve direk giriş yaptırmış gibi göstermekse yukarı da dediğim en kolay ve mantıklı çözüm. Ama yok ben facebook tarzı bir sistem yapacağım, kullanıcı ona girerken yeniden giriş işlemi yapsın izin versin ana giriş yaptığı hesaptan falan diyorsanız o zaman facebook’un kullandığı OAuth, Access token yapısı devreye girer

Hüseyin Yarol 6 yıl

facebook tarzı değil sadece 3 farklı sistemde de kulanıcıya tekrar tekrar login olmaya zorlamamak istiyorum tek sunucuda olsa ve tek sistem olsa tek db ile halledecektim de

Salih Ozanlagan 6 yıl

Salih Ozanlagan session Dosyaları tmp klasörü altında o sunucuda tutulur. Eğer sunucular tamamen size aitse vps vds se ortak bir session katmanı oluşturabilirsiniz. Ama bu hem güvenliksiz hem sağlıksız bir işlem olur genelde büyük projelerde belli önlemlerle yapılıyor. Siz sessionları nasıl tutuyorsanız aynısını bir ortak da de tutun o dbyide remote mysql olarak açın diğer sunuculardan buna bağlanır kontrol edersiniz. Performans için tablo türünü Memory ayarlayabilirsiniz zaten veriler sürekli silinmesi gereken şeyler kalıcı değiller

Hüseyin Yarol 6 yıl

Web servis ya da RMI gibi yöntemler kullanılarakda yapılabilir çoklu sistemden herhangibirinde login olduğunda diğerlerinedeki uzaktan login olma yöntem çalıştırıpda uygulanabilir.

H

Web service veya Api kullanarak yapabilirsin. Microsoft ve google bu sistemi kullanıyor.

E

session tutma, token ile hallet işlerini, token içerisinde ip datasınıda tut ki token çalınma ihtimaline karşı bir nebze önlem almış olursun.

Kurgun bence şöyle olmalı;

Herhangi sunucu üzerinden login olan bir user olsun. Kullanıcı logini başarılı ise sunucun kullanıcıya bir token gönderir. Bu token içerisinde ip, kullanıcı_id belki isim gibi bilgileri taşır. Token'ı sessionda tutmak yerine localStorage'de tutabilirsin. Kullanıcılardan gelen her işem için token'ı kontrol edersen login olup olmadığını diğer sunuculardada anlarsın. Ancak token'ın geçerli olduğunu sorgulatmak için ortak bir yapıya ihtiyacın olacak. Sunuculardan herhangi birinde tokens adından bir tablon olsun. Diğer tüm sunucuların token aldığında kontrolünü yapmak için (halen geçerli mi diye) bu ortak db'ye bağlanabilir.

Veya token içerisinde başlangıç tarihi dibi bir değer atarsın, sunucun token'ı aldığında ortak db'den sorgulamak zorunda kalmaz token tarihini kontrol eder. İyi bir şifreleme kullanırsan problem yaşayacağını zannetmem. Ancak kurgunu çok sağlam yapmalısın

E

+1 katılıyorum. Ayrıca LDAP ile çözebilirsen çok daha şık olur

Emre Başdoğan 6 yıl

Cross browser authentication. https olmasi lazim, Ajax ile sessionlari paylasirsin

Y

ajaxla başka sunucuyla iletişim kurabilirmiyim bu şekilde

Salih Ozanlagan 6 yıl

Tam bir bilgim olmamakla beraber yazıyorum, Redis ile login sessionlarının hepsini aynı sunucuda toplayıp aynı sessionlarını kullanabilirsiniz.

M

Birinde login olunca Üye ID yi barındıran bir cookie oluştur. Diğer sitelerden cookie olup olmadığına bak. Varsa cookiden ID yi al db de arat verileri çek session oluştur.

A

Salih Ozanlagan bu basit olan.

Akın Kiliçaslan 6 yıl

Simdi Sana dorduncu bir domain gerekiyor, buda cookie yapici gibi dusun, digera, b,c nin icinden cookieyi bu atacak

Y

peki şu olay nasıl olur diyelim herhangi birinden çıkış yaptı ?

S

Cikisi aslinda dorduncu domainden yapiyor. Google da bu mantikla calisiyor. Bizde 2 sene once bir programda kafa yormustuk. Su anda bu mantikla yapiyoruz

Yusuf Tontul 6 yıl

Yusuf Tontul php sistem demi

Salih Ozanlagan 6 yıl

Evet hocam

Yusuf Tontul 6 yıl

bu olaya sso deniyor. Aynı mekanizmayı turkcell'in sitesi de kullanıyor sso. Turkcell. Com. Tr adresinde. Aradığınız şeyde adımları böyle işliyor https://stackoverflow.com/a/35663573/4792552

B

bakayım hemen

Salih Ozanlagan 6 yıl

Google ve Microsoft bu işi zaten yapıyor. Örnek vermek gerekirse siz hotmail e giriş yaparken üstte adres çubuğunda http://msn.com/, http://live.com/, http://outlook.com/ gibi adresler geçip en son http://mail.live.com/ a yönlendiriyor. Aynı şekilde google a giriş yaparken gmail, youtube, blogger gibi alan adlarından geçiş yaparak yönlendirildiğini fark edebilirsiniz.

S

mesele nasıl yapılıyor o kullanan var evet de nasıl işte orası mesele

Salih Ozanlagan 6 yıl

görünen en basit yöntem diğer sunucuya geçerken querystring ile session verilerini oluşturacak datayı aktarmak.

Semih Şensu 6 yıl

Yaparsan ne olur yapmazsan ne olur diye bence bir dusun. Bir sistemi kullanan user diger sistemi ne sıklıkla kullancak, fayda/kod maliyeti ne olacak gibi sorular onemli.

V

3 ayrı sistem şu an var kullaniliyor a ayrı loginlerle

Salih Ozanlagan 6 yıl

Bu dediğini biz yapıyoruz. Bir çok Web sunucusu var kullanıcı her sayfa değişiminde hangisi musaitse netscaler üzerinden ona yönleniyor. Böylelikle hız ve ha oluyor.

Ayrı bir redis sunucu kuracaksın,
Oturumları redis üzerinde tutacaksın olacak bitecek.
Kolaylıklar

E

bunun maliyeti tahmini ne olur ?

S

Sanal sunucu yaparsan maliyeti olmaz. Fiziksel yaparsan ucu biraz açık. Her fiyata yapılır

E

sanalda sorun yaşarmıyız çok trafik olmuyor

Salih Ozanlagan 6 yıl

Trafiğinizi, hacminizi ve işinizi bilmediğimden yorum yapamayacağım, kusura bakmayın. Biz sanalı tercih ediyoruz, her gün milyonlarca trafik geçiyor üzerimizden hiç sorun yaşamıyoruz Kolaylıklar

Eren Buğdaycı 6 yıl

Eren Buğdaycı tm önce sanalla başlarız o zaman yazılanların bir çoğunu denicez zaten mecbur sistem oturana dek zaten sistemleri bir klon sistemde deneyip gerçek sisteme uygulamak lazım.

Salih Ozanlagan 6 yıl

kullanıcılar için ayrı bir veritabanı ve subdomain kullanırsınız google ın uyguladığı gibi daha işlevsel olur

H