Genel olarak ilk yaklaşımı gerçekten seviyorum.
- anlamak ve uygulamak basit
- güvenli (bilgime göre)
- geçmişte kullanıldığını gördüğüm nadir olmayan bir yaklaşım
Aklınızda bulundurmanız gereken ilk şey hakkında bahsetmediğim bir şey, jetonu hash etmek için kullanılan zaman damgasının son derece kısa (1 saniye gibi) bir TTL süresinin dolması gerekiyor, böylece mesajın gönderilmediğini doğrulayın 12 saat önceki mesajdan aynı zaman damgası ve jeton; açıkçası yasal olarak hesaplanacaktır ancak bu durumda değildir.
Eğer bunlar düşündüğünüz tek seçenekse, diğer yaklaşımlara da baktığınızdan emin olmak istiyorum, çünkü çok fazla var. Aslında listelediğimden daha fazlası. Bunlar, sadece amacınıza daha uygun olup olmadıklarını görmek için çalışmaya değer bazı ortak kimlik doğrulama yaklaşımlarıdır ve bunları anlayan başka bir şey size hangi yaklaşımı uygularsanız sıkılaştırmanıza yardımcı olacak bazı fikirler verebilir.
Notu yap, ben değil bir güvenlik uzmanı.
OAuth / Federe
Bu yaklaşımda, tüketen kodun jeton / sertifika / onlardan ne istediğini ve size ilettiği bir 3. taraf garantiniz var, bu noktada yapmanız gereken tek şey size verilen anahtarın 3. tarafa sorulmasıdır. okunaklı.
Pro:
- Standartlara dayalı
- Sorunlar başkaları tarafından başkalarının sistemlerinde bulunacak, böylece güvensizliğin olup olmadığını öğreneceksiniz
- Çok daha az yetkilendirme çalışmasına ihtiyacınız olacak
con:
- Bir üçüncü taraf hizmet sağlayıcısı ve API'larıyla ilgilenmeniz veya yetkilendirmeyi ana hizmetinizden ayırmak için kendi "3. taraf" ınızı oluşturup barındırmanız gerekir.
- Birçok hizmet için aşırı, ancak kavramsal olarak dikkate değer
Eşzamansız Sertifikalar
Burada müşterilerinize iletişim kurduklarında, kullanıcı oluşturduklarında onlarla paylaştığınız herkese açık bir sertifika ile şifreleme yaparsınız. Yanınızda, o kullanıcı ile ilişkili özel anahtarın şifresini çözersiniz. Genellikle iletişimi, kim olduğunu iddia ettikleri gibi tanımlamayı beklediğiniz gibi şifreleyebileceğini / şifresini çözebileceğini göstermek için bir meydan okuma yanıtıyla başlatacaksınız. Zorlu yanıtı kullanmayan "eşzamanlı" yaklaşımlar mümkün olsa da, biraz daha az güvenlik ve onları daha zor hale getirebilecek bazı zaman senkronizasyonu sorunları vardır.
dan Novell (evet gerçekten? novell, biliyor musunuz?)
Jetonlar, bir kerelik parola oluşturmak için bir değişken kullanır. Bu değişkene meydan okuma denir. Parolayı oluşturmak için kullanılan değişkeni belirlemek için iki ana yöntem eşzamansız veya eşzamanlıdır.
Zaman uyumsuz veya sınama yanıtı yöntemiyle, sunucu yazılımı, belirteç aygıtının şifrelemesi için belirteci harici bir sorun (rasgele oluşturulmuş bir değişken) gönderir. Belirteç, bu meydan okuma değişkenini, şifreleme algoritmasını ve paylaşılan sırrı, yanıtı doğru şekilde şifrelenmiş parolayı oluşturmak için kullanır.
Eşzamanlı yöntemle, parolayı oluşturmak için kullanılan meydan okuma değişkeni dahili olarak belirteç ve sunucu tarafından belirlenir. Her değişken içindeki zaman sayacı, olay sayacı veya zaman ve olay sayacı kombinasyonu, meydan okuma değişkeni için temel olarak kullanılır. Simge ve sunucunun her biri ayrı ayrı ve dahili olarak meydan değişkenini kendi sayaçlarından belirlediğinden, zaman sayaçlarının ve olay sayaçlarının senkronize kalması çok önemlidir. Sunucu ve simgenin senkronizasyondan çıkması çok kolay olduğundan, çoğu uygulama sayaçlar arasında belirli bir miktar kaymaya izin verir. Genellikle, bu sayaç değerlerinin küçük bir aralığı veya penceresi şifreyi hesaplamak için kullanılır. Ancak, belirteç ve sunucu bu pencerenin ötesinde senkronizasyondan çıkarsa,
Pro:
- Sertifikaların güvenilir ve güvenilir olmasını sağlayan CA kökleri vardır
- İşletim sistemlerinde sertifika depolarını kolayca yönetmek ve bakımını yapmak için standart tesisler vardır
- İyi çalışılmış bir yaklaşım, üzerinde çok fazla bilgi mevcut
- Son kullanma tarihi, çeşitli diğer şeylerle birlikte standart sertifikaların yerleşik tesisleridir, genellikle sağlamdır
con:
- Sertifikalar programlı olarak çalışmak zor olabilir
- Harici bir CA'ya ihtiyacınız olup olmadığına bağlı olarak, ücretsiz olmayabilir
- Beklenen kök güvenlerin yapılandırıldığından emin olmak için sertifika depolarını el ile tutması gerekebilir
NTLM
Bu daha küçük veya yalnızca dahili bir hizmetse ve bir Windows ortamındaysanız gülmeyin, erişimi garanti etmek için standart NTLM kimlik doğrulamasını kullanmanın yanlış bir yanı yoktur. Özellikle IIS ile çalışıyorsanız, bu en basit yaklaşımdır. Bir web.config dosyasında bakımı ve yapılandırması kolaydır.
Pro:
- Yapılandırması, uygulanması ve bakımı son derece kolaydır
con:
- Minimum birlikte çalışabilirlik
- Halka açık kimlik doğrulaması için yeterli değil
Nonce'lar
Kimlik doğrulama yaklaşımınızda nonces ile çalışırken, hizmette nonce alma yöntemini sağlarsınız. Bu yöntem, her istekte benzersiz bir rastgele dize veya veri parçası ("bir nonce") döndürür. Diğer yöntemlere yapılan her istek artık bir nonce öğesinin alınmasını ve istek için kripto algoritmasında kullanılmasını gerektirir. Buradaki değer, sunucunun kullanılan nonces'leri izlemesi ve bir nonce'nin tekrar kullanılmasına izin vermemesidir, bu, bir nonce ile bir istek yapıldığında, bu nonce ile bir daha asla bir daha yapılamaz. Nüfus talep edildiğinden, kullanılabilir nosyonlar listesine eklenirler, kullanıldıkları için mevcut listeden kullanılan listeye taşınırlar.
Pro:
- Thwarts saldırıları oldukça iyi tekrar ediyor
- Uygulanması veya anlaşılması tamamen zor değil
con:
- İstemcilerin her bir istek için iki istekte bulunmalarını gerektirir (ancak yalnızca belirli istekler için nonces gerektirerek azaltılabilir )
- İşlemsel olması gereken nonces yönetimini gerektirir
- Nonces için ekstra talepler talep ederek performansı olumsuz yönde etkiler (işlemsizlik, nonces ile çalışmanın kaynak maliyetini daha da artırır)