Wildfly / Anafor: bahar Güvenlik hatası filtre zinciri yürütme
Entegre etmek için çalışıyorumSpring Security SAML ExtensionileSpring Boot.
Tam örnek bir uygulama geliştirdim, kaynak kodu GitHub üzerinde yayınlanan tüm:
Bahar Önyükleme uygulama olarak Web çalıştırarak (gömülü Uygulama Sunucusu kullanarak Bahar Alet Seti ile), sorunsuz çalışıyor. Ne yazık ki, kimlik doğrulama işlemi işe yaramazWildFly Akıntı/(ve üretim olarak kullanmak zorundayım).
Giriş yaparak, IdP gerçekleştiren görebiliyorumAuthNsüreç ve benim özel UserDetails
Uygulama Talimatları doğru yürütülür. Rağmen bu Bahar, geçerli kullanıcı için ayrıcalıkları kurmak yok.
@Component
public class SAMLUserDetailsServiceImpl implements SAMLUserDetailsService {
// Logger
private static final Logger LOG = LoggerFactory.getLogger(SAMLUserDetailsServiceImpl.class);
@Override
public Object loadUserBySAML(SAMLCredential credential)
throws UsernameNotFoundException, SSOUserAccountNotExistsException {
String userID = credential.getNameID().getValue();
if (userID.compareTo("jdoe@samplemail.com") != 0) { // We're simulating the data access.
LOG.warn("SSO User Account not found into the system");
throw new SSOUserAccountNotExistsException("SSO User Account not found into the system", userID);
}
LOG.info(userID " is logged in");
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
GrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER");
authorities.add(authority);
ExtUser userDetails = new ExtUser(userID, "password", true, true, true,
true, authorities, "John", "Doe");
return userDetails;
}
}
Hata ayıklama, sorun FilterChainProxy
sınıftan başlatan baktım.
WildFly üzerinde web uygulaması çalıştırdığınızda, ServletRequest
niteliği FILTER_APPLIED
olduğunu görüyorumnulltemizler SecurityContextHolder
böylece Bahar.
private final static String FILTER_APPLIED = FilterChainProxy.class.getName().concat(".APPLIED");
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
boolean clearContext = request.getAttribute(FILTER_APPLIED) == null;
if (clearContext) {
try {
request.setAttribute(FILTER_APPLIED, Boolean.TRUE);
doFilterInternal(request, response, chain);
} finally {
SecurityContextHolder.clearContext();
request.removeAttribute(FILTER_APPLIED);
}
} else {
doFilterInternal(request, response, chain);
}
}
VMware vFabric tc SeverveTomcatböyle bir şey olmaz. Bir şekilde bu sorunu gidermek için var mı?
CEVAP
MySQL küçük bir proje, yükü idare edebilmek için CouchDB için açık ettik. Sonuç şaşırtıcı oldu.
Yaklaşık 2 yıl önce http://www.ubuntuusers.de/ muhtemelen en büyük Alman Linux topluluk internet sitesi) öz yazılmış bir yazılım yayımladık. Bu site Python ile yazılmış ve tüm özel durumları yakalamak ve başka bir küçük MySQL destekli web sitesi için onları göndermek için mümkün olan WSGI bir katman ekledik. Bu küçük bir web sitesi, bir karma farklı hataları belirlemek için kullanılan ve yineleme sayısı ve son geçtiği de saklı.
Ne yazık ki, yayımlanmasından kısa bir süre sonra, traceback-logger web sitesi artık tepki vermiyordu. Özel durumlar hemen hemen her isteği atıyordu ana sitemizin üretim db olarak test aşamasında ele almadık diğer bazı böcekler, bazı kilit sorunlar yaşadık. Ana sitemizde, traceback-logger adı verilen sunucu kümesi saniyede birkaç kez k sayfa gönderin. Ve bu traceback logger (zaten sadece geliştirme amaçlı kullanılan eski bir server) ev sahipliği yapan bir çok küçük sunucu için.
Şu anda CouchDB oldukça popüler oldu, ve bu yüzden dışarı ve traceback-logger küçük bir deneyin yazmaya karar verdim. Yeni logger sadece sıralama ve filtre seçenekleri ile hata bir liste halinde, tek bir python dosyası oluşuyordu ve bir sayfa gönderin. Ve arka planda CouchDB bir süreç başladım. Yeni yazılım, son derece hızlı bir şekilde tüm isteklere cevap verdi ve otomatik hata raporları büyük miktarda görüntülemek için başardık.
İlginç bir şey, bu çözüm önce, çalışan eski bir özel sunucu, yeni CouchDB tabanlı site diğer yandan sadece çalışan bir paylaşılan xen örneği ile çok sınırlı kaynakları. Ve hatta anahtar değerleri depolar gücü yatay ölçek kullanmıyorum. CouchDB / Ayrık OTP yeteneği bir şey kilitlemeden eşzamanlı istekleri işlemek için zaten ihtiyaçlarını karşılamak için yeterli oldu.
Şimdi, hızlı bir şekilde yazılı CouchDB-traceback logger hala çalışıyor ve ana web sitesinde böcekler keşfetmek için yararlı bir yoldur. Her neyse, yaklaşık bir ay sonra veritabanı çok büyük olur ve CouchDB işlemi öldürülüyor. Ama sonra, kompakt-db komutu CouchDB azaltır boyutu birkaç GB için bazı KBs tekrar ve veritabanı yeniden çalışır duruma (belki de ben ekleyebilirsiniz bir cron süreci... 0°).
Özet olarak, CouchDB kesinlikle en iyi seçim (veya MySQL daha en azından daha iyi bir seçim) bu proje için ve işini de iyi yapıyor.
Javax çözme.net.ssl.SSLHandshakeExcept...
Çözmek için nasıl "Eklenti yürütm...
Bahar Güvenlik Hazırda 3 veritabanı il...
Nasıl el ile Bahar Güvenlik kimliği do...
Yapılandırma Bahar Güvenlik 3.x birden...