Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mevcut authentication yapısı yerine social login'e geçilmesi (GitHub,Google) #21

Open
umutluoglu opened this issue Jun 30, 2021 · 8 comments · May be fixed by #38
Open

Mevcut authentication yapısı yerine social login'e geçilmesi (GitHub,Google) #21

umutluoglu opened this issue Jun 30, 2021 · 8 comments · May be fixed by #38
Assignees
Labels
help wanted Extra attention is needed

Comments

@umutluoglu
Copy link
Member

Projeyi ilk yazmaya başladığımızda e-posta ve şifre ile kayıt almayı düşünmüştük ama bunu kolaylık sağlamak ve daha sonradan hesap bilgilerini unutma sorununun önüne geçmek için Github ve Google gibi çok kullanılan 2 veya 3 social media API'ı üzerinden kayıt ve login yapılacak şekilde değiştirmeliyiz.

@mustafa-korkmaz
Copy link
Contributor

Benim kanaatim isi MVP olarak olabildigince basit tutmak adina web app i gerekli tum social loginleri handle edebilecek bir yerde host etmek olur. Boylelikle farkli auth scheme lari handle etmenize gerek kalmaz. Ornegin ben burada 10 satir kodla tum social loginleri tek bir yerden handle edebiliyorum. Kullanici hangi login metodunu secerse secsin ben firebase auth handling yapiyorum. Teknik olarak 1 social login handling ile n tanesinin arasinda backend nezdinde fark olmuyor. Frontend tarafina da extra buton ekleyip 3-5 satir ile hallediyorsunuz. Asagida firebase destekli tum sign-in metodlari var.
image

@enisn
Copy link
Contributor

enisn commented Jul 7, 2021

Envai çeşit provider'ın implementasyonu olan mükemmel bir proje:
https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers#providers

Ancak gördüğüm kadarıyla Microsoft'un authentication middleware'i yerine manuel olarak bir ActionFilter ile authentication sağlandığı için biraz custom bir implementasyon gerekebilir.

@yusufyilmazfr
Copy link
Member

Daha önceden sosyal medya hesapları ile giriş işlemlerini tecrübe etme fırsatım olmadı ama sırf bu özelliklerden faydalanmak için uygulamayı Firebase üzerinde host etmek bana çok da cezbedici gelmedi açıkçası.

@umutluoglu
Copy link
Member Author

umutluoglu commented Jul 7, 2021 via email

@enisn
Copy link
Contributor

enisn commented Jul 7, 2021

Daha önceden sosyal medya hesapları ile giriş işlemlerini tecrübe etme fırsatım olmadı ama sırf bu özelliklerden faydalanmak için uygulamayı Firebase üzerinde host etmek bana çok da cezbedici gelmedi açıkçası.

Bir AspNetCore projesi için benim tavsiyem kesinlikşe şu olur:
https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers#getting-started

Herhangi bir dependency olmadan, direkt provider'lara gidip token'ı alıp tekrar provider'dan valide edip, kulalnıcı bilgilerini alan bir yapı. Manuel işlemler güzel bir abstraction ile ortaklaştırılmış. Bir kere implemente edince, provider eklemek içni tek yapmak gereken credential'ları girmek. Sadece Şu anki JWT yapısını AspNetcore Middleware'ine tanımlamak gerekir:

services
                .AddAuthentication(opts =>
                {
                    opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    opts.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                })
                 .AddJwtBearer(opts =>
                {
                    // ... Audience, Isssuer configuration here
                })
                .AddFacebook(opts => this.Configuration.Bind("Authentication:Facebook", opts))
                .AddGoogle(opts => this.Configuration.Bind("Authentication:Google", opts))
                .AddMicrosoftAccount(opts => this.Configuration.Bind("Authentication:MicrosoftAccount", opts))
                .AddLinkedIn(opts => this.Configuration.Bind("Authentication:LinkedIn", opts))
                .AddTwitter(opts => this.Configuration.Bind("Authentication:Twitter", opts))
                .AddGithub(opts => this.Configuration.Bind("Authentication:Github", opts))
                // ....

Front-end Server'a redirect eder, server da login olunacak provider'a redirect eder. Böylece authentication'dan sonra server valide ettikten sonra kendi token'ını verip client'da değişiklik olmadan JWT üzerinden authentication devam eder.

@yusufyilmazfr
Copy link
Member

Daha önceden sosyal medya hesapları ile giriş işlemlerini tecrübe etme fırsatım olmadı ama sırf bu özelliklerden faydalanmak için uygulamayı Firebase üzerinde host etmek bana çok da cezbedici gelmedi açıkçası.

Bir AspNetCore projesi için benim tavsiyem kesinlikşe şu olur:
https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers#getting-started

Herhangi bir dependency olmadan, direkt provider'lara gidip token'ı alıp tekrar provider'dan valide edip, kulalnıcı bilgilerini alan bir yapı. Manuel işlemler güzel bir abstraction ile ortaklaştırılmış. Bir kere implemente edince, provider eklemek içni tek yapmak gereken credential'ları girmek. Sadece Şu anki JWT yapısını AspNetcore Middleware'ine tanımlamak gerekir:

services
                .AddAuthentication(opts =>
                {
                    opts.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    opts.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                })
                 .AddJwtBearer(opts =>
                {
                    // ... Audience, Isssuer configuration here
                })
                .AddFacebook(opts => this.Configuration.Bind("Authentication:Facebook", opts))
                .AddGoogle(opts => this.Configuration.Bind("Authentication:Google", opts))
                .AddMicrosoftAccount(opts => this.Configuration.Bind("Authentication:MicrosoftAccount", opts))
                .AddLinkedIn(opts => this.Configuration.Bind("Authentication:LinkedIn", opts))
                .AddTwitter(opts => this.Configuration.Bind("Authentication:Twitter", opts))
                .AddGithub(opts => this.Configuration.Bind("Authentication:Github", opts))
                // ....

Front-end Server'a redirect eder, server da login olunacak provider'a redirect eder. Böylece authentication'dan sonra server valdide ettikten sonra kendi token'ını verip client'da değişiklik olmadan JWT üzerinden authentication devam eder.

Teşekkür ediyorum, akşam açık olan PR'a baktıktan sonra bunun detaylarına da bakacağım. 🤞

@ouzdev
Copy link

ouzdev commented Jul 17, 2021

Merhaba dünde dc üzerinden konuşmuştuk issue ile ilgili. Sanırım ilgilenen yok halilden başka. Bayram tatili sürecince github ile logini implemente etmeye çalışacağım. Şuanlık sadece github üzerinden kullanıcı girişi sağlaycağım daha sonraki süreçlerde google ve diğerlerinide implemente etmeye çalışırız.

@halilkocaoz
Copy link
Collaborator

Merhaba, bu issue için Social Branch'i üzerinde geliştirmeler yaptım.

Birden fazla geliştiricinin değerlendirmesi iyi olur diye düşünüyorum, vaktiniz varsa lütfen inceleyebilir misiniz?

@halilkocaoz halilkocaoz linked a pull request Jul 18, 2021 that will close this issue
@halilkocaoz halilkocaoz linked a pull request Sep 3, 2021 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants