CAS veya OAuth ile TOA?


184

Tek oturum açma için CAS protokolünü mü yoksa OAuth + ' ı mı kullanacağımı merak ediyorum .

Örnek Senaryo:

  1. Bir Kullanıcı korumalı bir kaynağa erişmeye çalışır, ancak kimliği doğrulanmaz.
  2. Uygulama kullanıcıyı SSO sunucusuna yönlendirir.
  3. Beeing kimlik doğrulaması yaptığında kullanıcı TOA sunucusundan bir token alır.
  4. TOA, orijinal uygulamaya yönlendirir.
  5. Özgün uygulama, belirteci TOA sunucusuna karşı denetler.
  6. Belirteç uygunsa, erişime izin verilir ve uygulama kullanıcı kimliğini bilir.
  7. Kullanıcı oturumu kapatır ve tüm bağlı uygulamadan aynı anda oturumu kapatır (tek çıkış).

Anladığım kadarıyla CAS tam olarak ne için icat edildi. CAS istemcileri, kimlik doğrulama hizmetini kullanmak için CAS protokolünü uygulamalıdır. Şimdi istemci (tüketici) sitesinde CAS veya OAuth kullanmayı merak ediyorum. OAuth CAS'ın bu kısmının yerine mi geçiyor? Yeni fiili bir standart olarak OAuth tercih edilmeli midir? CAS'ın kullanıcı adı / şifre, OpenID, TLS sertifikaları gibi farklı yöntemleri destekleyen kimlik doğrulama kısmı için kullanımı kolay (Sun OpenSSO! Değil) değişimi var mı?

Bağlam:

  • Farklı uygulamalar TOA sunucusunun kimlik doğrulamasına güvenmeli ve oturum benzeri bir şey kullanmalıdır.
  • Uygulamalar GUI web uygulamaları veya (REST) ​​serileri olabilir.
  • TOA sunucusuna, merkezi kullanıcı bilgi deposundan roller, e-posta ve benzeri gibi kullanıcı hakkında daha fazla bilgi almak için gereken bir kullanıcı kimliği sağlanmalıdır.
  • Tek Oturum Açma mümkün olmalıdır.
  • Çoğu istemci Java veya PHP ile yazılmıştır.

Az önce OAuth halefi olabilecek WRAP'ı keşfettim . Microsoft, Google ve Yahoo tarafından belirlenen yeni bir protokoldür.

ek

OAuth'un SSO'yu uygulamak için bile kullanılabileceği için kimlik doğrulama için tasarlanmadığını, yalnızca OpenID gibi bir TOA hizmetiyle birlikte öğrendiğini öğrendim.

OpenID bana "yeni CAS" gibi geliyor. CAS'da OpenID'nin bazı özellikleri vardır (tek çıkış gibi), ancak belirli bir senaryoda eksik parçaları eklemek zor olmamalıdır. Bence OpenID geniş kabul görüyor ve OpenID'yi uygulamalara veya uygulama sunucularına entegre etmek daha iyi. CAS'ın OpenID'yi de desteklediğini biliyorum, ancak CAS'ın OpenID ile dağıtılabilir olduğunu düşünüyorum.


6
Tek çıkış özelliği bir anti-özelliktir. Bunun farkında olduğum tüm kullanıcı çalışmaları, hafif ve son derece kafa karıştırıcıdan acemi ve güçlü kullanıcılara kadar her yerde olduğunu belirtti. Şahsen günlük olarak tek çıkıştan yararlanan bir sistem kullanmak zorundayım ve inanılmaz derecede rahatsız edici buluyorum. Neredeyse asla istediğim davranış bu değil.
Bob Aman

16
Tek çıkışın bir antifeature olduğu konusunda anlaşmayın. Her şey söz konusu uygulamalara bağlıdır. Bir şekilde birbiriyle ilişkili olan web uygulamaları için, yani google posta ve google takvim için, birinden açıkça çıkış yaparsanız, diğerinden çıkış yapmanız mantıklıdır. Belirgin bir "ilişki" bulunmayan uygulamalarda, Bob ile aynı fikirdeyim.
ashwoods

6
Bu sorunun başlangıçta OAuth 2.0 kullanılmadan önce sorulduğunu unutmayın, bu nedenle OAuth ile ilgili bilgiler artık doğru olmayabilir.
Andrew

Yanıtlar:


238

OpenID, CAS için bir 'ardıl' veya 'yedek' değildir, farklıdır, niyette ve uygulamada.

CAS merkezileştiriyor kimlik doğrulamayı . Tüm (muhtemelen dahili) uygulamalarınızın kullanıcılardan tek bir sunucuya giriş yapmalarını istemelerini istiyorsanız kullanın (tüm uygulamalar tek bir CAS sunucusunu gösterecek şekilde yapılandırılmıştır).

OpenID merkezsizleşiyor kimlik. Uygulamanızın kullanıcıların istediği kimlik doğrulama hizmetine giriş yapmasını kabul etmesini istiyorsanız bunu kullanın (kullanıcı OpenID sunucu adresini sağlar - aslında 'kullanıcı adı' sunucunun URL'sidir).

Yukarıdakilerin hiçbiri yetkilendirme işlemlerini gerçekleştirmez (uzantılar ve / veya özelleştirme olmadan).

OAuth yetkilendirmeyi işler ancak geleneksel 'USER_ROLES tablosunun (kullanıcı erişimi) yerini almaz. Üçüncü taraflar için yetkilendirme yapar.

Örneğin, uygulamanızın Twitter ile entegre olmasını istiyorsunuz: bir kullanıcı verilerini güncellediğinde veya yeni içerik yayınladığında otomatik olarak tweet atmasına izin verebilir. Bir kullanıcı adına, şifresini almadan (bu kullanıcı için güvenli olmadığı açıktır) bazı üçüncü taraf hizmetlere veya kaynaklara erişmek istiyorsunuz. Uygulama Twitter'dan erişim ister, kullanıcı yetkilendirir (Twitter üzerinden) ve ardından uygulamanın erişimi olabilir.

Yani, OAuth Tek Oturum Açma (ya da CAS protokolünün yerine geçme) ile ilgili değildir. Yaklaşık değil sen kullanıcının erişebileceği neyi kontrol. Bu bırakılmasıyla ilgilidir kullanıcıyı nasıl kontrol etmek onların kaynaklarını üçüncü şahıslar tarafından erişilebilir. Çok farklı iki kullanım durumu.

Tanımladığınız bağlamda CAS muhtemelen doğru seçimdir.

[güncellenmiş]

Bununla birlikte, kullanıcının kimliğini güvenli bir kaynak olarak görürseniz, TOA'yı OAuth ile uygulayabilirsiniz. Temel olarak 'GitHub'a kaydolun' ve benzerleri bunu yapar. Muhtemelen protokolün orijinal amacı değil, ama yapılabilir. OAuth sunucusunu kontrol ederseniz ve uygulamaları yalnızca onunla kimlik doğrulaması yapacak şekilde kısıtlarsanız, bu TOA'dır.

Ancak oturumu kapatmayı zorlamanın standart bir yolu yoktur (CAS bu özelliğe sahiptir).


11
OAuth esas olarak yetkilendirme ile ilgili olsa da, merkezi bir kimlik doğrulama sunucusu gibi kullanılabilir. Google OAuth hesabının, aslında OAuth sağlayıcısından herhangi bir hizmet kullanmadan kimlik doğrulama için birçok site (SO dahil) tarafından kullanılması gibi.
Amir Ali Akbari

1
Dahası, Bertl cevabında belirtildiği gibi CAS şimdi OAuth'u hem istemci hem de sunucu olarak sunmaktadır.
Anthony O.

3
Bu cevap şu anda OAuth 2.0'ın mevcut olmasıyla ilgili mi? OAuth 2.0 ile fikriniz nasıl değişti?
Andrew

6
OAuth 2.0 hala bir yetkilendirme protokolüdür ve bir kimlik doğrulama protokolü değildir, ancak Facebook / LinkedIn vb.'nin yaptığı bir kimlik doğrulama protokolü oluşturmak için OAuth 2.0'ın üzerine inşa edilebilir; OAuth 2.0'ın kimlik doğrulaması sağlayan tek standart uzantısı, OpenID
Hans Z'nin

48

Bunu şu şekilde düşünme eğilimindeyim:

Kullanıcı kimlik doğrulama sistemini kontrol ediyorsanız / sahipseniz ve merkezi kimlik doğrulaması gerektiren heterojen sunucuları ve uygulamaları desteklemeniz gerekiyorsa CAS kullanın.

Sahip olmadığınız / desteklemediğiniz sistemlerden (yani Google, Facebook vb.) Kullanıcı kimlik doğrulamasını desteklemek istiyorsanız OAuth'u kullanın.


6
OpenID bir kimlik doğrulama protokolü, OAuth bir yetkilendirme protokolüdür.
zenw0lf

13

OpenID bir kimlik doğrulama protokolüdür, OAuth ve OAuth WRAP yetkilendirme protokolleridir. Hibrit OpenID uzantısı ile birleştirilebilirler .

Elinizdeki uygulamaya tam olarak uymasalar bile, çok fazla momentum (daha fazla destek, üçüncü tarafların katılımını sağlamak daha kolay) olan standartların üzerine inşa eden insanları görmeyi kesinlikle tercih ediyorum. Bu durumda, OAuth'un CAS değil momentumu vardır. OAuth ile yapmanız gerekenlerin tümünü veya en azından neredeyse tamamını yapabilmelisiniz. Gelecekte daha sonraki bir noktada, OAuth WRAP işleri daha da basitleştirmelidir (bir taşıyıcı jetonu kullanarak ve şifrelemeyi protokol katmanına iterek bazı değerli ödünleşimler yapar), ancak yine de bebeklik döneminde ve bu arada, OAuth muhtemelen işi iyi yapacak.

Sonuç olarak, OpenID ve OAuth kullanmayı seçerseniz, sizin ve sistemle entegre olması gereken herkes için daha fazla dil için daha fazla kitaplık vardır. Ayrıca, protokollere bakarak çok daha fazla göz küresine sahipsiniz ve olması gerektiği kadar güvenli olduklarından emin olun.


8

Bana göre, TOA ve OAuth arasındaki gerçek fark hibe, uygular besbelli Oauth bir sunucuya çünkü değil kimlik doğrulama vardır kimlik doğrulaması (OAuth istemci uygulaması ile gerçekleşmesi için google OpenID veya Facebook'a giriş yapmanız gerekir)

TOA'da, ileri düzey bir kullanıcı / sysadmin son kullanıcıya "TOA uygulaması" nda bir uygulamaya son erişim izni verir OAuth'ta, son kullanıcı "OAuth uygulaması" nda "verilerine" uygulama erişimi verir

Neden OAuth protokolünün bir TOA sunucusunun parçası olarak kullanılamadığını anlamıyorum. Hibe ekranını akıştan çıkarın ve OAuth sunucusunun destek db'den hibe aramasına izin verin.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.