Spring Security'deki sorunumla ilgili yardımınızı sormak istiyorum. Kullanıcı tarafından seçilen seçeneğe bağlı olarak bir giriş bilgisini doğrulamak zorunda olduğum bir gereksinimim var. Seçenek 1, oturum açmış kullanıcıyı üçüncü taraf hizmeti aracılığıyla doğrular. Seçenek 2 veritabanı doğrulama seviyesini kullanarak normal doğrulama olurdu. Bunu nasıl uygulayabilirim?Yay Güvenliğinde Özel Kimlik Doğrulama Uygulaması
cevap
Genel Strateji
org.springframework.security.authentication.AuthenticationProvider
özel olarak uygulanması sağlayın o delegeler uygun arka uca kimlik doğrulaması (üçüncü taraf servis, başkaAuthenticationProvider
, vs.).- Doğru kimlik doğrulama arka ucunu seçmesini sağlamak için kullanıcı tarafından seçilen seçeneği özel
AuthenticationProvider
geçirin. - Özel olarak
AuthenticationProvider
varsayılan kimlik doğrulama sağlayıcısı olarak yapılandırın.
Adım 1:
AuthenticationProvider
AuthenticationProvider
uygulamak tek bir yöntem ile bir arabirimdir.
class DelegatingAuthenticationProvider implements AuthenticationProvider {
@Autowired
private ThirdPartyAuthenticationService service;
@Autowired
@Qualifier("anotherAuthenticationProvider")
private AuthenticationProvider provider;
@Override
public Authentication authenticate(final Authentication authentication) throws AuthenticationException {
// Get the user selection.
String selection = (String) authentication.getDetails();
// Take action depending on the selection.
Authentication result;
if("ThirdParty".equals(selection)) {
// Authenticate using "service" and generate a new
// Authentication "result" appropriately.
}
else {
// Authenticate using "provider" and generate a new
// Authentication "result" appropriately.
}
return result;
}
}
Adım 2: Bu nedenle, özel bir uygulama gibi görünebilir
AuthenticationProvider
uygulama yukarıdakilerdendetails
özelliğinden kullanıcı seçimini alırAuthenticationProvider
kullanıcı seçimini iletin Authentication
nesnesi. Muhtemelen, kullanıcı seçiminin HttpServletRequest
'dan alınması ve AuthenticationProvider
çağrılmadan önce Authentication
nesnesine eklenmesi gerekir. Bu, Authentication
ve HttpServletRequest
nesnelerine erişime sahip olan ve AuthenticationProvider
uygulanmadan önce çağrılan başka bir bileşen anlamına gelir.
Authentication
nesnesi, AbstractAuthenticationProcessingFilter
'un bir uygulaması tarafından oluşturulur. Bu sınıf, nesnesini kabul eden ve Authentication
nesnesini döndüren attemptAuthentication
adlı bir yönteme sahiptir. Öyle görünüyor ki, ihtiyaç duyulan şeyleri uygulamak için iyi bir aday olur. Kullanıcı adı-şifre tabanlı kimlik doğrulama için uygulama sınıfı UsernamePasswordAuthenticationFilter
'dur. Bu sınıf, Authentication
'un bir uygulaması olan UsernamePasswordAuthenticationToken
'un yeni bir örneğini döndürür. Yani, UsernamePasswordAuthenticationFilter
'u genişleten bir sınıf yeterli olmalıdır.
class ExtendedUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
...
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(username, password);
authentication.setDetails(obtainUserSelection(request));
...
return authentication;
}
}
obtainUserSelection
isteği dışında kullanıcı seçimini alır özel bir yöntemdir.
Adım 3: yapılandırma
Yapılandırma Spring Güvenlik konfigürasyonunda AuthenticationProvider
ve filtre uygulamaları. Tam adımlar XML veya Java yapılandırmasının kullanılmasına bağlı olarak değişecektir.
- 1. Kimlik doğrulama, özel kimlik doğrulama için çalışmıyor
- 2. Yay Güvenliği - Özel LDAP Kimlik Doğrulaması
- 3. couchdb özel kimlik doğrulama işleyicisi
- 4. django'da Özel Kullanıcı ile Özel Kimlik Doğrulama?
- 5. Web Uygulaması - Kimlik Doğrulama/Giriş Çerçevesi
- 6. Raylar ve iOS uygulaması, kimlik doğrulama sorusu
- 7. Yay Güvenliği 3.0 - Temel http Kimlik Doğrulama İletişimini Özelleştir
- 8. Silex uygulamasında özel kimlik doğrulama sağlayıcısı
- 9. ASP.NET Giriş kontrolü özel kimlik doğrulama başarısız
- 10. Azure Mobile Uygulamalarıyla Özel Kimlik Doğrulama
- 11. Özel kimlik doğrulama arka sonu. Django
- 12. Köşeli Kimlik Doğrulama - Çoklu kimlik doğrulama düzeyleri
- 13. .NET Özel Üyelik Vs. Özel Giriş/Kayıt: Kimlik Doğrulama/Yetkilendirme
- 14. Özel kimlik doğrulama nesnesini ServiceStack kimlik doğrulamasından döndürme
- 15. NTLM Kimlik Doğrulama Android
- 16. ASP.NET MVC2 Uygulaması için özel doğrulama kuralları
- 17. WebSockets kimlik doğrulama
- 18. ASP.Net MVC özel Kimlik
- 19. Cloud Endpoints-Python için Özel Kimlik Doğrulama (Kullanıcı Modeli)
- 20. Yay güvenliği için OAuth kimlik doğrulamasında kimlik doğrulama alanlarını değiştirmek mümkün mü?
- 21. Azure mobil uygulamalar Cordova ile özel kimlik doğrulama
- 22. Bir php uygulaması için önceden oluşturulmuş giriş/kimlik doğrulama bileşeni?
- 23. Ajax: HTTP Temel Kimlik doğrulama ve kimlik doğrulama bilgisi
- 24. WWW-Kimlik Doğrulama ile kimlik doğrulama sorunları: Anlaşıldı
- 25. Django Kimlik Doğrulama Mongodb
- 26. Zend2 + Doctrine2 Kimlik Doğrulama
- 27. Mongo Kimlik Doğrulama
- 28. Asp.net Kimlik Doğrulama Hatası
- 29. WCF Kimlik Doğrulama
- 30. Gamecenter kimlik doğrulama sorunu
wow..thanks manish! Bu bir sürüş öğrenme bahar güvenliği bir heck. Bu benim ilk uygulamam yol. Beni ExtendedUsernamePasswordAuthenticationFilter uygulamasıyla ilgili bir eğitim sitesine yönlendirebilir misin? lütfen :) –
[UsernamePasswordAuthenticationFilter'] 'ın resmi uygulamasını inceleyebilirsiniz: https://github.com/spring-projects/spring-security/blob/master/web/src/main/java/org/springframework/security /web/authentication/UsernamePasswordAuthenticationFilter.java). – manish