CZJUG Praha - Spring security a Gate keeping se Zuulem
Únorové setkání Pražské Czech Java User Group proběhne v pondělí 27.2. od 19h v posluchárně S5 na Matematicko-fyzikální fakultě Karlovy Univerzity na Malostranském náměstí 25, Praha 1. Čeká nás prezentce: Spring Security prakticky (Jan Novotný, FG Forrest) a dále Jak gating a Zuul zlepšují kvalitu kódu v GoodData (Michal Vančo, GoodData). Sponzorem setkání je starlift.org. Vstup na akce CZJUGu je zdarma, a není třeba se předem registrovat. Pokud se chystáte přijít, dejte nám vědět formou hlasování v anketě na hlavní stránce portálu java.cz. Spring Security prakticky Přednáška je určena těm, kteří se se Spring Security zatím nesetkali nebo setkali jen letmo. Projdeme si základní principy fungování této knihovny, která zajišťuje vyspělou autentizaci a autorizaci v Java aplikacích postavených (nejen) na Springu. Prolétneme v rychlosti i základní bezpečnostní prvky prohlížečů jako CSP, HSTS, HPKP a další security hlavičky, správné nakládání s hesly, některé typy útoků a ochranu proti nim. Jan Novotný Vývojem v Javě se živím už více jak 10 let. Ve společnosti FG Forrest se starám o vývoj webových aplikací pro přední české i zahraniční zákazníky. Posledních pár let se snažím komunitě vrátit to, co jsem jsem z ní načerpal - jsem spoluorganizátorem ne-konference jOpenSpace, natáčím videocast Kafemlejnek.TV a už spíš výjimečně napíši něco na blog. Jak gating a Zuul zlepšují kvalitu kódu v GoodData Prezentace představí koncept “gatingu”, který je již přes rok implementován v GoodData jako součást Continuous Integration. Díky tomuto přístupu mají vývojáři jistotu, že pracují nad funkčním kódem a do repozitářů se dostává pouze otestovaný kód. Mimo jiné bude prezentace zaměřena na konkrétní ukázky, typy “pipeline” a informace o tom, jak snadno si stejné prostředí můžete zprovoznit nad svým kódem (a ne jen pokud používáte Gerrit). Michal Vančo Michal pracuje již téměř 4 roky ve společnosti GoodData, která se zabývá vývojem big-data analytické platformy v cloudu. Jako QA architekt a manažer se nejvíce soustředí na zlepšování a efektivitu testovacích frameworků a nástrojů, které souvisí s automatizací a zdokonalováním celého vývojového procesu. Aktivně se věnoval rozvoji testovacích nástrojů pro nahrazení manuálního testování, automatizaci doručování a také performance nástrojům pro simulaci chování paralelních uživatelů. Před GoodData byl členem QA týmu v Red Hatu, kde se zabýval testováním middleware produktů postavených nad JBoss AS a jejich testování primárně z pohledu clusterování a performance. A před dávnými lety na škole dělal jako svoji bakalářskou práci CSV editor pro vývojový nástroj NetBeans. -- S pozdravem Roman "Dagi" Pichlik /* http://dagblog.cz/ Blog pro kodery */
Re: Spring Security a file upload v login stranke
Dobry den, problem vyrieseny. Keby niekoho zaujimalo riesenie, tento clanok dost pomoze: http://www.forsthaus.de/blog/?p=397 Zvysok je citanie zdrojakov. S pozdravom Radovana Straube --- On Tue, 1/25/11, Radovana Straube radovana_stra...@yahoo.com wrote: From: Radovana Straube radovana_stra...@yahoo.com Subject: Spring Security a file upload v login stranke To: konference@java.cz Date: Tuesday, January 25, 2011, 2:04 PM Dobry den, v ramci rozsirenia funkcionality chcem pridat Spring Security 3.1 do starsej aplikacie. Povodna aplikacia ma na login stranke nielen meno a heslo, ale aj jeden checkbox a fileupload. Vygooglila som, ze ked chcem posielat do j_spring_security_check viacero poli (aj ich potom zo security contextu vediet vycitat), treba prepisat AuthenticationProcessingFilter a UserDetailService. V tom problem nie je. Ale ako mam pridat do formulara fileupload, to sa mi nepodarilo zistit. Ked nastavim v login formulari enctype=multipart/form-data, tak Spring Security nevie request spravne precitat. Pravdepodobne vie citat len text/plain. Vedel by ma prosim niekto nasmerovat? Rozdelit login stranku na dve stranky bohuzial nesmiem. Dakujem Radovana Straube
Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu
V konfiguraku nic takoveho neni . Pouze nejaky DefaultSpringContextSource... !-- CONFIGURATION FOR ACTIVE DIRECTORY AUTH. -- !-- -- bean id=springSecurityAuthenticationSource class=org.springframework.security.ldap.authentication.SpringSecurityAuthenticationSource / bean id=authenticationSource class=org.springframework.ldap.authentication.DefaultValuesAuthenticationSourceDecorator property name=target ref=springSecurityAuthenticationSource / property name=defaultUser value=${ac.default.domain}${ac.default.username} / property name=defaultPassword value=${ac.default.password} / /bean bean id=securityContextSource class=org.springframework.security.ldap.DefaultSpringSecurityContextSource constructor-arg value=${ac.protocol}://${ac.server.ip}:${ac.server.port} / property name=authenticationSource ref=authenticationSource/ property name=baseEnvironmentProperties map entry key=com.sun.jndi.ldap.connect.timeout value=${ac.connection.timeout} / /map /property /bean bean id=userSearch class=org.springframework.security.ldap.search.FilterBasedLdapUserSearch constructor-arg index=0 value${ac.path.users}/value /constructor-arg constructor-arg index=1 valuesAMAccountName={0}/value /constructor-arg constructor-arg index=2 ref local=securityContextSource / /constructor-arg property name=searchSubtree value=true / /bean bean id=bindAuthenticator class=org.springframework.security.ldap.authentication.BindAuthenticator constructor-arg ref local=securityContextSource/ /constructor-arg property name=userSearch ref=userSearch / /bean bean id=ldapAuthoritiesPopulator class=org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator constructor-arg index=0 ref local=securityContextSource / /constructor-arg constructor-arg index=1 value${ac.path.groups}/value /constructor-arg property name=searchSubtree value=true/ /bean bean id=userDetailsService class=org.springframework.security.ldap.userdetails.LdapUserDetailsService constructor-arg index=0 ref local=userSearch / /constructor-arg constructor-arg index=1 ref local=ldapAuthoritiesPopulator / /constructor-arg /bean bean id=authenticationProvider class=org.springframework.security.ldap.authentication.LdapAuthenticationProvider constructor-arg index=0 ref local=bindAuthenticator / /constructor-arg constructor-arg index=1 ref local=ldapAuthoritiesPopulator / /constructor-arg /bean s:authentication-manager alias=authenticationManager s:authentication-provider ref=authenticationProvider user-service-ref=userDetailsService / /s:authentication-manager Nechapu, jak to mam nakonfigurat do toho XML? Pouzivam Spring security 3.0.x. Lukas __ Od: Martin Kuba ma...@ics.muni.cz Komu: Java konference@java.cz Datum: 26.11.2010 17:50 Předmět: Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu Dne 26.11.2010 08:41, Martin Kuba napsal(a): Spring Security jsem nepoužíval, jenom Spring LDAP, ale podle toho popisu soudím, že je třeba si vytvořit vlastní implementaci AbstractContextSource, viz http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/index.html?org/springframework/ldap/core/support/AbstractContextSource.html která se k připojí k LDAP serveru a použije přitom SSL certifikát. V něm je třeba se správně autentizovat, popis je na http://download.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html v části Using Custom Sockets. Je třeba si vytvořit SslSocketFactory, která dokáže předložit klientský SSL certifikát. To se dělá zhruba takto: Tak jsem si to zkusil, a je to tak. V konfiguraci Springu se musí org.springframework.ldap.core.support.LdapContextSource nahradit za vlastní implementaci, která musí vypadat nějak takto: package cz.makub; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ldap.core.support.AbstractContextSource; import
Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu
Dne 29.11.2010 13:11, el.wond...@centrum.cz napsal(a): V konfiguraku nic takoveho neni . Pouze nejaky DefaultSpringContextSource... Tak právě ten bych zkusil vyměnit za ten můj MyContextSource. Oba jsou potomci AbstractContextSource http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/org/springframework/ldap/core/support/AbstractContextSource.html takže by měli být zaměnitelní. Pokud by to přesto nešlo, tak bych jako druhou možnost zkusil ten můj MyContextSource udělat jako potomka DefaultSpringContextSource místo AbstractContextSource, ve skutečnosti jde jenom o to předefinovat metodu getDirContextInstance() tak, aby podstrčila jako parametr vlastní implementaci SSLSocketFactory. Makub Od: Martin Kubama...@ics.muni.cz Komu: Javakonference@java.cz Datum: 26.11.2010 17:50 Předmět: Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu Dne 26.11.2010 08:41, Martin Kuba napsal(a): package cz.makub; import org.springframework.ldap.core.support.AbstractContextSource; public class MyContextSource extends AbstractContextSource { -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: ma...@ics.muni.cz Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --
Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu
Dne 26.11.2010 08:41, Martin Kuba napsal(a): Spring Security jsem nepoužíval, jenom Spring LDAP, ale podle toho popisu soudím, že je třeba si vytvořit vlastní implementaci AbstractContextSource, viz http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/index.html?org/springframework/ldap/core/support/AbstractContextSource.html která se k připojí k LDAP serveru a použije přitom SSL certifikát. V něm je třeba se správně autentizovat, popis je na http://download.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html v části Using Custom Sockets. Je třeba si vytvořit SslSocketFactory, která dokáže předložit klientský SSL certifikát. To se dělá zhruba takto: Tak jsem si to zkusil, a je to tak. V konfiguraci Springu se musí org.springframework.ldap.core.support.LdapContextSource nahradit za vlastní implementaci, která musí vypadat nějak takto: package cz.makub; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ldap.core.support.AbstractContextSource; import javax.naming.Context; import javax.naming.NamingException; import javax.naming.directory.DirContext; import javax.naming.ldap.InitialLdapContext; import javax.net.SocketFactory; import javax.net.ssl.*; import java.io.FileInputStream; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import java.net.URI; import java.net.URISyntaxException; import java.security.KeyStore; import java.util.Hashtable; /** * Alternative to LdapContextSource allowing client SSL certificates. * * @author Martin Kuba ma...@ics.muni.cz * @version $Id:$ * @see org.springframework.ldap.core.support.LdapContextSource */ public class MyContextSource extends AbstractContextSource { final static Logger log = LoggerFactory.getLogger(MyContextSource.class); private String keyStoreFile; private String keyStorePassword; public void setKeyStoreFile(String keyStoreFile) { this.keyStoreFile = keyStoreFile; } public void setKeyStorePassword(String keyStorePassword) { this.keyStorePassword = keyStorePassword; } @SuppressWarnings({unchecked}) @Override protected DirContext getDirContextInstance(Hashtable env) throws NamingException { String url = (String) env.get(Context.PROVIDER_URL); try { if (new URI(url).getScheme().equalsIgnoreCase(ldaps)) { env.put(java.naming.ldap.factory.socket, cz.makub.MyContextSource$MySSLFactory); MySSLFactory.setManagers(getKeyManagers(), null); } } catch (URISyntaxException e) { log.error(LDAP URL + url + is wrong, e); } return new InitialLdapContext(env, null); } private KeyManager[] getKeyManagers() { return getKeyManagers(loadKeyStoreFromFile(keyStoreFile, keyStorePassword), keyStorePassword); } private static KeyManager[] getKeyManagers(KeyStore keyStore, String storePassword) { try { KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(SunX509); keyManagerFactory.init(keyStore, storePassword != null ? storePassword.toCharArray() : null); return keyManagerFactory.getKeyManagers(); } catch (Exception ex) { throw new RuntimeException(ex.getMessage(), ex); } } private static KeyStore loadKeyStoreFromFile(String ksfile, String password) { String kstype; if (ksfile.endsWith(.jks)) { kstype = JKS; } else if (ksfile.endsWith(.p12)) { kstype = PKCS12; } else { throw new RuntimeException(keystore file name + ksfile + must end with .ks (JKS) or .p12 (PKCS12)); } try { KeyStore store = KeyStore.getInstance(kstype); store.load(new FileInputStream(ksfile), password != null ? password.toCharArray() : null); return store; } catch (Exception ex) { throw new RuntimeException(ex.getMessage(), ex); } } /** * SSL SocketFactory enabling client certificates and customs server checks. */ @SuppressWarnings({UnusedDeclaration}) public static class MySSLFactory extends SocketFactory { final static MySSLFactory thisFactory = new MySSLFactory(); static SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); public static void setManagers(KeyManager[] keyManagers, TrustManager[] trustManagers) { try { SSLContext sctx = SSLContext.getInstance(TLS); sctx.init(keyManagers, trustManagers, null); factory = sctx.getSocketFactory(); } catch (Exception ex) { ex.printStackTrace(); } } public static SocketFactory getDefault() { return thisFactory; } @Override public Socket createSocket() throws IOException { return factory.createSocket
Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu
Ahoj Javisti. Potreboval bych poradit s problemem, kdy je potreba se autentizovat/autorizovat LDAPem pres SSL za pouziti certifikatu pomoci Spring security. Od zakaznika jsem dostal certifikaty, ktere mam pouzit. Vubec netusim, jak a hlavne kam se ty certifikaty musi nacpat(JDK, Tomcat,...??), aby se pri autentizaci ty certifikaty pouzili. Muzete mi nekdo poradit? Popripade hodit nejaky link s prikladem. Predem dik, Lukas
Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu
Pokud se jedná o serverový certifikát tak ten se pomocí keytool dá do JKS keystoru a cesta k tomu jks se nastaví jako truststoreFile u konektoru tomcata v server.xml. On 11/25/2010 05:58 PM, el.wond...@centrum.cz wrote: Ahoj Javisti. Potreboval bych poradit s problemem, kdy je potreba se autentizovat/autorizovat LDAPem pres SSL za pouziti certifikatu pomoci Spring security. Od zakaznika jsem dostal certifikaty, ktere mam pouzit. Vubec netusim, jak a hlavne kam se ty certifikaty musi nacpat(JDK, Tomcat,...??), aby se pri autentizaci ty certifikaty pouzili. Muzete mi nekdo poradit? Popripade hodit nejaky link s prikladem. Predem dik, Lukas
Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu
Dne 25.11.2010 17:58, el.wond...@centrum.cz napsal(a): Ahoj Javisti. Potreboval bych poradit s problemem, kdy je potreba se autentizovat/autorizovat LDAPem pres SSL za pouziti certifikatu pomoci Spring security. Od zakaznika jsem dostal certifikaty, ktere mam pouzit. Vubec netusim, jak a hlavne kam se ty certifikaty musi nacpat(JDK, Tomcat,...??), aby se pri autentizaci ty certifikaty pouzili. Muzete mi nekdo poradit? Popripade hodit nejaky link s prikladem. Předpokládám, že se tím myslí klientské SSL certifikáty pro přístup k LDAP serveru, vůči kterému se ověří username a heslo uživatele, tj. to co je popsáno na http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ldap.html#ldap-context-source a ne třeba klientský SSL certifikát v uživatelově browseru, to by byla úplně jiná pohádka. Spring Security jsem nepoužíval, jenom Spring LDAP, ale podle toho popisu soudím, že je třeba si vytvořit vlastní implementaci AbstractContextSource, viz http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/index.html?org/springframework/ldap/core/support/AbstractContextSource.html která se k připojí k LDAP serveru a použije přitom SSL certifikát. V něm je třeba se správně autentizovat, popis je na http://download.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html v části Using Custom Sockets. Je třeba si vytvořit SslSocketFactory, která dokáže předložit klientský SSL certifikát. To se dělá zhruba takto: SSLContext sc = SSLContext.getInstance(SSL); TrustManager[] myTrustManager = new TrustManager[]{ new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { //není potřeba u klienta } public void checkServerTrusted(X509Certificate[] certs, String authType) { //jen pokud chci ověřovat server } } }; KeyManager[] myKeyManager = new KeyManager[] { new X509KeyManager() { public String[] getClientAliases(String s, Principal[] principals) { } public String chooseClientAlias(String[] strings, Principal[] principals, Socket socket) { } public String[] getServerAliases(String s, Principal[] principals) { } public String chooseServerAlias(String s, Principal[] principals, Socket socket) { } public X509Certificate[] getCertificateChain(String s) { } public PrivateKey getPrivateKey(String s) { } } }; sc.init(myKeyManager, myTrustManager, new java.security.SecureRandom()); SSLSocketFactory sslSocketFactory = sc.getSocketFactory(); samozřejmě je třeba naimplementovat metody pro TrustManager a KeyManager tak, aby se ověřil saerver a předložil klientský SSL certifikát. Makub -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: ma...@ics.muni.cz Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --
Re: websphere-webservice-security
2010/6/25 jerzy.burzek jerzy.bur...@zoznam.sk: Ako teda zabezpecit sluzby a data? Zatial ma napadli (a docital som sa) o 2 rieseniach: 1) prejst z HTTP na HTTPS, co v principe asi nebude problem 2) SOAP body encryption Presne o tomto je WS-Security. http://en.wikipedia.org/wiki/WS-Security Jakeho mas klienta? Axis2 to sveho casu kompletne pekne implementoval... (http://ws.apache.org/wss4j/) A prave s 2) mam problem. Server si nastavim (podlahttp://www.ibm.com/developerworks/websphere/library/techarticles/0505_cowan/0505_cowan.html#N101C7), klienta neviem ako Pokud se jedna o komunikaci XML-XML, pak wss4j je opravdu to, co hledas. -- Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com
Spring security (acegi)
Zdravim konferenciu, chcel by som vo svojom projekte pouzit Spring security (acegi), ale prihlasovaciu obrazovku nemam login.jsp ale login.action. tento controller LoginController je odvodeny od ParameterizableViewController a do modelu (v metode handleRequestInternal) umiestnuje nejake informacie, ktore sa zobrazuju na prihlasovacej obrazovke (samozrejme je tam aj login formular): form action=employer/j_spring_security_check method=post table border=1 trtdPrihlasovacie meno:/tdtdinput type=text name=j_username tabstop=1/td/tr trtdHeslo:/tdtdinput type=password name=j_password tabstop=2/td/tr trtd colspan=2 align=centerinput class=button type=submit value=Prihlasit tabstop=3/td/tr /table /form ked zadam meno a heslo a stlacim Prihlasit, vsetko v poriadku prebehne (interceptory zafunguju), aj ma spravne presmeruje, ale vykonava sa aj znova controller LoginController a metoda handleRequestInternal co ale ja nechcem. je mozne tomuto nejako zabranit. bohuzial nemozem pouzit login.jsp , prihlasovacia obrazovka musi byt riesena cez controller. dakujem Ivan
Re: spring security - vlastny uzivatelia
Odpoviem si sám, aspoň do archívu konferencie: 1. Vytvorím si vlastnú implementáciu AuthenticationProvider kde implementujem metódu authenticate(). public class MyAuthenticationProvider implements AuthenticationProvider { /** */ public Authentication authenticate(Authentication authentication) throws AuthenticationException { ...Doplniť autentifikáciu pomocou mojej service... authentication.setAuthenticated(true); return authentication; } /** */ public boolean supports(Class authentication) { return (MyAuthenticationToken.class.isAssignableFrom(authentication)); } } 2. Vytvorím si vlastnú implementáciu AbstractAuthenticationToken kde prepíšem metódu getAuthorities() - keďže default sa vždy vytvorí RoleVoter, ten práve pracuje s rolami z tejto metódy. public class MyAuthenticationToken extends AbstractAuthenticationToken { @Override public GrantedAuthority[] getAuthorities() { ... Zistiť si role pomocou mojej service ako String[]... ... vrátiť role obalené do GrantedAuthority[]... } } 3. Do applicationContext-security.xml nastavím môjho provider-a: bean id="myAuthenticationProvider" class="sk.nieco.MyAuthenticationProvider" security:custom-authentication-provider / /bean 4. Do aplikácie sa prihlásim kódom: ... Authentication authentication = new MyAuthenticationToken(name, password, mac); SecurityContextHolder.getContext().setAuthentication(authentication); ... 5. Ak sa použije tag security:remember-me /, treba nadefinovať nejakú UserDetailsService. Aké jednoduché :-) Rastislav "Bedo" Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 Rastislav Siekel wrote: Ahojte, začínam so Spring security a neviem sa akosi vymotať z tých AuthenticationProvider-ov a AccessDecisionVoter-ov. Mám aplikáciu, ktorá si autentifikáciu a autorizáciu rieši vlastnými prostriedkami. Pre autentifikáciu - login(String name, String password, String mac). Pre autorizáciu tam je metóda, ktorá mi vráti, či prihlásený užívateľ je v niektorej z rolí - konkrétne isUserInRole(String user, String[] roles). Pri prechode na Spring security predpokladám, že urobím implementáciu AuthenticationProvider-a, kde si budem interne volať tieto metódy, ale tam sa interne používa interface Authentication, ktorý má mnoho implementácii xxxToken a ešte sa v konfigurácii používa interface AccessDecisionVoter, ktorý má tiež kopec implementácii xxxVoter priamo v Spring security. Neviete ma niekto nakopnúť čím začať, prípadne aspoň linku na nejaký príklad, pretože príklady priamo pri Spring security sú len 2 a žiadny z nich nepoužíva tento prístup. Ani priateľ Google neponúka žiadny príklad na vlastnú implementáciu :-(. Dík, Rastislav "Bedo" Siekel.
spring security - vlastny uzivatelia
Ahojte, začínam so Spring security a neviem sa akosi vymotať z tých AuthenticationProvider-ov a AccessDecisionVoter-ov. Mám aplikáciu, ktorá si autentifikáciu a autorizáciu rieši vlastnými prostriedkami. Pre autentifikáciu - login(String name, String password, String mac). Pre autorizáciu tam je metóda, ktorá mi vráti, či prihlásený užívateľ je v niektorej z rolí - konkrétne isUserInRole(String user, String[] roles). Pri prechode na Spring security predpokladám, že urobím implementáciu AuthenticationProvider-a, kde si budem interne volať tieto metódy, ale tam sa interne používa interface Authentication, ktorý má mnoho implementácii xxxToken a ešte sa v konfigurácii používa interface AccessDecisionVoter, ktorý má tiež kopec implementácii xxxVoter priamo v Spring security. Neviete ma niekto nakopnúť čím začať, prípadne aspoň linku na nejaký príklad, pretože príklady priamo pri Spring security sú len 2 a žiadny z nich nepoužíva tento prístup. Ani priateľ Google neponúka žiadny príklad na vlastnú implementáciu :-(. Dík, Rastislav "Bedo" Siekel.
Re: spring security - vlastny uzivatelia
Zdrojáky spring-security a samples. Není to težké pochopit co je co. Něco podobného jsem teď dělal bez in-depth znalosti stylem copy and paste.
Re: Jersey a Spring security bez Spring frameworku
Zdravím, odpovídám na zprávu z úterka, 30. prosince 2008, kterou Josef Cacek napsal(a) v 0:00:08: Díky moc, něco takového by mohlo pomoci, ještě kdyby se to do té Jersey třídy dalo dostat přímo přes anotaci @Context. Akurát mě trochu zaráží: SecurityFilter only supports FORM (FORM authentication is supported in all release versions of SecurityFilter) and BASIC (not quite yet -- BASIC authentication will be supported in an upcoming 1.1 release) authentication. BASIC HTTP AUTH, je přesně to co potřebuju. I když FORM asi bude stačit. Podívám se na to podrobněji a uvidím, i ten blog by mohl pomoci. --- Původní zpráva --- Odesilatel: Josef Cacek josef.ca...@gmail.com Předmět: Jersey a Spring security bez Spring frameworku Datum: 30. prosince 2008, 00:00:08 (GMT +0100) Přílohy: none msgid:d2f0b05d0812291500i7b872edembcecf94b4b333...@mail.gmail.com J Ahojte, J 2008/12/29 Tomáš Procházka t.procha...@centrum.cz: Mám Wenbovou aplikaci postavenou nad Wicketem, součástí je také restové rozhraní vytvořené pomoci Jersey knihovny. Potřeboval by ještě přidat HTTP autorizaci pro přístup k tomu RESTu jen pro registrované uživatel? Nevíte někdo jak nejsnáze na to? Někde jsem se dočetl, že se dá použít Spring Security. J ... Neexistuje jednodušší řešení? J Zkuste se podívat, jestli by vám nestačil SecurityFilter. J http://securityfilter.sourceforge.net/ J Kdysi jsem si o něm udělal pár řádek v blogu. J http://javlog.cacek.cz/2007/10/zabezpeen-webovch-aplikac.html Tomáš Procházka J -- pepa cacek Konec původní zprávy -- - Tomáš Procházka E-mail: t.procha...@centrum.cz WWW: http://www.atomsoft.cz ICQ: 87147320 -
Jersey a Spring security bez Spring frameworku
Zdravím. Mám Wenbovou aplikaci postavenou nad Wicketem, součástí je také restové rozhraní vytvořené pomoci Jersey knihovny. Potřeboval by ještě přidat HTTP autorizaci pro přístup k tomu RESTu jen pro registrované uživatel? Nevíte někdo jak nejsnáze na to? Někde jsem se dočetl, že se dá použít Spring Security. Nášel jsem několik relativně jednoduchých tutoriálů. Stačí přidat pár souborů do web.xml a vytvořit jeden nový konf. xml soubor. Jenže všechno počítá s tím, že toto přidávám do aplikace postavené nad Spring Frameworkem. Takže mě to nutí do projektu nejenom přidat další spoustu dependencí, ale ještě nastudovat a inicializovat spoustu dalších věcí. Jinak to skončí jen chybou: java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered? Přes což jsem se dostal přidáním listener listener-classorg.springframework.web.context.ContextLoaderListener/listener-class /listener do web.xml, ale teď zase končím chybou: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:387) Neexistuje jednodušší řešení? Potřebuju získat jen HTTP autorizaci dle údajů v DB a přístup k session údajům přihlášeného uživatele. Zajímavý článek jsem našel zde: http://weblogs.java.net/blog/mhadley/archive/2008/03/authentication.html ten ale vyžaduje přechod na Glasfish a já se doposud snažil aplikaci udržovat funkční na libovolném aplikačním serveru, jako Tomcat a Jetty. Hlavně asi proto, že z přes Jetty se dá aplikace velmi snadno spustit přes přímo přes Maven. Možná že by to šlo i u GlassFish... Díky za každou radu Datum: 23:18:5129. prosince 2008 -- - Tomáš Procházka E-mail: t.procha...@centrum.cz WWW: http://www.atomsoft.cz ICQ: 87147320 -
RE: Jersey a Spring security bez Spring frameworku
Co takhle jednoduchy servlet filter? H. -Původní zpráva- Od: konference-boun...@java.cz [mailto:konference-boun...@java.cz] za uživatele Tomáš Procházka Odesláno: Monday, December 29, 2008 23:29 Komu: konference@java.cz Předmět: Jersey a Spring security bez Spring frameworku Zdravím. Mám Wenbovou aplikaci postavenou nad Wicketem, součástí je také restové rozhraní vytvořené pomoci Jersey knihovny. Potřeboval by ještě přidat HTTP autorizaci pro přístup k tomu RESTu jen pro registrované uživatel? Nevíte někdo jak nejsnáze na to? Někde jsem se dočetl, že se dá použít Spring Security. Nášel jsem několik relativně jednoduchých tutoriálů. Stačí přidat pár souborů do web.xml a vytvořit jeden nový konf. xml soubor. Jenže všechno počítá s tím, že toto přidávám do aplikace postavené nad Spring Frameworkem. Takže mě to nutí do projektu nejenom přidat další spoustu dependencí, ale ještě nastudovat a inicializovat spoustu dalších věcí. Jinak to skončí jen chybou: java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered? Přes což jsem se dostal přidáním listener listener-classorg.springframework.web.context.ContextLoaderL istener/listener-class /listener do web.xml, ale teď zase končím chybou: org.springframework.beans.factory.NoSuchBeanDefinitionExceptio n: No bean named 'springSecurityFilterChain' is defined at org.springframework.beans.factory.support.DefaultListableBeanF actory.getBeanDefinition(DefaultListableBeanFactory.java:387) Neexistuje jednodušší řešení? Potřebuju získat jen HTTP autorizaci dle údajů v DB a přístup k session údajům přihlášeného uživatele. Zajímavý článek jsem našel zde: http://weblogs.java.net/blog/mhadley/archive/2008/03/authentic ation.html ten ale vyžaduje přechod na Glasfish a já se doposud snažil aplikaci udržovat funkční na libovolném aplikačním serveru, jako Tomcat a Jetty. Hlavně asi proto, že z přes Jetty se dá aplikace velmi snadno spustit přes přímo přes Maven. Možná že by to šlo i u GlassFish... Díky za každou radu Datum: 23:18:5129. prosince 2008 -- - Tomáš Procházka E-mail: t.procha...@centrum.cz WWW: http://www.atomsoft.cz ICQ: 87147320 -
Re: Jersey a Spring security bez Spring frameworku
Ahojte, 2008/12/29 Tomáš Procházka t.procha...@centrum.cz: Mám Wenbovou aplikaci postavenou nad Wicketem, součástí je také restové rozhraní vytvořené pomoci Jersey knihovny. Potřeboval by ještě přidat HTTP autorizaci pro přístup k tomu RESTu jen pro registrované uživatel? Nevíte někdo jak nejsnáze na to? Někde jsem se dočetl, že se dá použít Spring Security. ... Neexistuje jednodušší řešení? Zkuste se podívat, jestli by vám nestačil SecurityFilter. http://securityfilter.sourceforge.net/ Kdysi jsem si o něm udělal pár řádek v blogu. http://javlog.cacek.cz/2007/10/zabezpeen-webovch-aplikac.html Tomáš Procházka -- pepa cacek
Re: Spring (Acegi) Security zmena a vynuceni https
Tak to jde, protoze jsem slepej jak patrona - pro IS_AUTHENTICATED_ANONYMOUSLY uzivatele sem si nastavil requires http a i kdyz jsem pred to dal IS_AUTHENTICATED_FULLY requires https vracelo mne to http. Tak sem smazal requires=http a funguje to - jenom kdyz nahodou zmeni url na http tak si pojede dal. ale on na to browser upozorni...
Re: Spring (Acegi) Security zmena a vynuceni https
K čemu v tomto případě používáte HTTPS protokol? Aby se nedalo odchytit heslo nebo k tomu aby byl chráněna session přihlášeného uživatele proti zneužití (Session hijacking http://en.wikipedia.org/wiki/Session_hijacking)? Protože pokud vám jde o to druhé, tak vámi uvedený způsob (pokud nemáte nějakou další kontroluhttp://blog.novoj.net/2007/06/05/sdileni-session-mezi-protokoly-http-a-https/) nebude nic platný. Session cookie totiž budete mít pravděpodobně již vytvořenou od prvního requestu HTTP protokolem a tudíž bude odchytitelná. Útočník sice potom nezjistí heslo pro přihlášení, ale pokud to původní uživatel udělá za něj, bude mít k dispozici autentizovanou session díky této nechráněné cookie. Cestou je mít kompletně celý web na HTTPS, ale to generuje jistý overhead pro server, a nebo implementovat další ochrany proti odchycení session id. Možná to máte ošetřené, ale pro jistotu upozorňuji na tuhle možnost. Honza Novotný Dne 3. červenec 2008 15:43 Karel Tejnora [EMAIL PROTECTED] napsal(a): Tak to jde, protoze jsem slepej jak patrona - pro IS_AUTHENTICATED_ANONYMOUSLY uzivatele sem si nastavil requires http a i kdyz jsem pred to dal IS_AUTHENTICATED_FULLY requires https vracelo mne to http. Tak sem smazal requires=http a funguje to - jenom kdyz nahodou zmeni url na http tak si pojede dal. ale on na to browser upozorni... -- -- Ing. Jan Novotný @@ http://blog.novoj.net Myšlenky dne otce Fura --
Re: Spring (Acegi) Security zmena a vynuceni https
uživatele proti zneužití (Session hijacking)? Protože pokud vám jde o Jo jo - to ma spring security v sobe - posle se username a heslo pres HTTPS a pokud se spravne zaloguje (resi se to ve filtru) Session se vytvori nova a zkopiruje data z te stare (tu zahodi). Takze to jsessionid (cookie nebo param) se zmeni a nahradi za nove, ktere neni zname. Ceho sem chtel dosahnout je to, aby kdyz nejakym zpusobem (bookmark) uzivatel, ktery je authentifikovany vleze zpatky na http a tim posle sessionId nechrane, mu aplikace naplacala pres ruku napr. 403 Access Denied a zaroven zinvalidovala jeho session. A ted mne napada - posila Ajax ktery je z https stranky pres https? Karel
Re: Acegi security
diky moc za vase odpovedi, jeste bych se chtel zeptat, zda se v teto tride: public class MyAuthListener implements ApplicationListener, InitializingBean { public void onApplicationEvent(ApplicationEvent event) { if (event instanceof InteractiveAuthenticationSuccessEvent) { final Authentication tmpAuth = SecurityContextHolder.getContext().getAuthentication(); log.debug(InteractiveAuthenticationSuccessEvent: + tmpAuth.getName()); if (tmpAuth.getDetails() instanceof WebAuthenticationDetails) { final WebAuthenticationDetails webDetails = (WebAuthenticationDetails) tmpAuth.getDetails(); userDao.logAuthenticationSuccess(tmpAuth.getName(),webDetails.getRemoteAddress()); } else { log.warn(Authentication.getDetails() not instance of WebAuthenticationDetails: + tmpAuth.getDetails()); } } } } da nejekym zpusobem dostat na httpSession? Původní zpráva Od: Josef Cacek [EMAIL PROTECTED] Předmět: Re: Acegi security Datum: 23.1.2008 09:20:08 Ahojte, 2008/1/23 radovan deka [EMAIL PROTECTED]: Ahoj, rozhodl jsem se zkusit pouzit Acegi security na autentizaci uzivatelu. Autentizace funguje ok, jen nevim jak vyresit pozadavek na ulozeni IP adresy uzivatele a cas, pri kazde uspesne autentizaci. zrovna včera jsem přemýslel o tom, že bych o tomhle mohl napsat něco do blogu, tak jste to uspíšil. Jedno z řešení (využití ApplicationListeneru) je popsáno zde: http://javlog.cacek.cz/2008/01/acegi-logujeme-loginy.html -- pepa cacek http://javlog.cacek.cz/
Re: Acegi security
Ahojte, 2008/1/23 radovan deka [EMAIL PROTECTED]: diky moc za vase odpovedi, jeste bych se chtel zeptat, zda se v teto tride: public class MyAuthListener implements ApplicationListener, InitializingBean { ... da nejekym zpusobem dostat na httpSession? Myslím, že to není možné. Z instance WebAuthenticationDetails máte možnost získat pouze sessionId, ale vlastní session objekt ne. Nevím na co session potřebujete, ale zvážil bych buď použití session scoped beanu, anebo vytvoření servlet filtru, který by vám do ThreadLocal proměnné v nějakém SessionHolderu ukládal aktuální session. -- pepa cacek http://javlog.cacek.cz/
Acegi security
Ahoj, rozhodl jsem se zkusit pouzit Acegi security na autentizaci uzivatelu. Autentizace funguje ok, jen nevim jak vyresit pozadavek na ulozeni IP adresy uzivatele a cas, pri kazde uspesne autentizaci. Vygooglil sem, ze je potreba rozsirit tridu AuthenticationProcessingFilter, ale nevim, jak v teto tride poznam, jestli autentizace byla uspesna. Pak sem jeste narazil na moznost vytvorit listenera, ktery implementuje ApplicationListener. V tomto pripde by nebyl problem ulozit ten cas, ale zas nevim jak zjistit IP adresu.
Re: Acegi security
ahoj, v metode doFilter se vola metoda attemptAuthentication, kdyz neprojde autentizace tak by se mela vyhodit vyjimka, kdyz projde tak ta metoda vrati object Authentication, takze asi poupravit doFilter, berte to ale s rezervou, nemam to nijak podlozene, jenom sem se ted dival do kodu toho filtru Tomas radovan deka wrote: Ahoj, rozhodl jsem se zkusit pouzit Acegi security na autentizaci uzivatelu. Autentizace funguje ok, jen nevim jak vyresit pozadavek na ulozeni IP adresy uzivatele a cas, pri kazde uspesne autentizaci. Vygooglil sem, ze je potreba rozsirit tridu AuthenticationProcessingFilter, ale nevim, jak v teto tride poznam, jestli autentizace byla uspesna. Pak sem jeste narazil na moznost vytvorit listenera, ktery implementuje ApplicationListener. V tomto pripde by nebyl problem ulozit ten cas, ale zas nevim jak zjistit IP adresu. __ Information from ESET Smart Security, version of virus signature database 2815 (20080122) __ The message was checked by ESET Smart Security. http://www.eset.com
Re: Acegi security
V předkovi třídy AuthenticationProcessingFilter je deklarována metoda: protected void onSuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, Authentication authResult) throws IOException {} Ta má vše co potřebujete. Udělal bych tedy potomka AuthenticationProcessingFilter, přepsal výše zmíněnou metodu a IP adresu si uložil. Pokud byste si ji chtěl ukládat přímo do objektu Authentication, který je přístupný přes security kontext, možná bych zvažoval rozšíření metody: /** * Provided so that subclasses may configure what is put into the authentication request's details * property. * * @param request that an authentication request is being created for * @param authRequest the authentication request object that should have its details set */ protected void setDetails(HttpServletRequest request, UsernamePasswordAuthenticationToken authRequest) { authRequest.setDetails(authenticationDetailsSource.buildDetails(request)); } Více určitě objevíte ve zdrojácích Acegi ;-) Honza N. 23.1.08, Tomas Vojtech [EMAIL PROTECTED]: ahoj, v metode doFilter se vola metoda attemptAuthentication, kdyz neprojde autentizace tak by se mela vyhodit vyjimka, kdyz projde tak ta metoda vrati object Authentication, takze asi poupravit doFilter, berte to ale s rezervou, nemam to nijak podlozene, jenom sem se ted dival do kodu toho filtru Tomas radovan deka wrote: Ahoj, rozhodl jsem se zkusit pouzit Acegi security na autentizaci uzivatelu. Autentizace funguje ok, jen nevim jak vyresit pozadavek na ulozeni IP adresy uzivatele a cas, pri kazde uspesne autentizaci. Vygooglil sem, ze je potreba rozsirit tridu AuthenticationProcessingFilter, ale nevim, jak v teto tride poznam, jestli autentizace byla uspesna. Pak sem jeste narazil na moznost vytvorit listenera, ktery implementuje ApplicationListener. V tomto pripde by nebyl problem ulozit ten cas, ale zas nevim jak zjistit IP adresu. __ Information from ESET Smart Security, version of virus signature database 2815 (20080122) __ The message was checked by ESET Smart Security. http://www.eset.com -- -- Ing. Jan Novotný @@ http://blog.novoj.net Myšlenky dne otce Fura --
jaky security framework?
Zdravím konferenci, potřeboval bych doporučit něco jako security framework. Chtěl bych určité metody oběktů zabezpečit na uživatelské role. něco jako: public void someMethod() { Security.checkRole(admin,poweruser); ... ... ... } kde by Security.checkRole mohlo vyhodit nějakou SecurityException. koukal sem na jaas, ale tam se mi nelibi že jakmile to jednou zapnu, aplikuje se to všude. díky za návrhy -- Martin Beránek smime.p7s Description: S/MIME Cryptographic Signature
RE: jaky security framework?
To co chcete se da naprosto perfektne udelat pomoc AOP. Proste metode priradite aspekt, ktery to vynuti. Tom -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Martin Beránek Sent: Monday, July 09, 2007 3:00 PM To: Java Subject: jaky security framework? Zdravím konferenci, potřeboval bych doporučit něco jako security framework. Chtěl bych určité metody oběktů zabezpečit na uživatelské role. něco jako: public void someMethod() { Security.checkRole(admin,poweruser); ... ... ... } kde by Security.checkRole mohlo vyhodit nějakou SecurityException. koukal sem na jaas, ale tam se mi nelibi že jakmile to jednou zapnu, aplikuje se to všude. díky za návrhy -- Martin Beránek
Re: jaky security framework?
Jasne... ale budu to psat cele od zacatku. Spise jestli uz neni neco hotoveho (at uz je to postavne na aspektech nebo ne) - a to se stale bavime pouze o overeni user in role. Ale cela ta maskarada okolo jako je security context je vec o neco slozitejsi. Tomas Hubalek napsal(a): To co chcete se da naprosto perfektne udelat pomoc AOP. Proste metode priradite aspekt, ktery to vynuti. -- Martin Beránek smime.p7s Description: S/MIME Cryptographic Signature
Re: jaky security framework?
Zdravim, koukal jsi po acegi-security? Nejsem si jisty, jestli je tak jednoduche ho pouzit i mimo spring, ale jinak muzu vrele doporucit :) S pozdravem Petr Gola On 09/07/07, Martin Beránek [EMAIL PROTECTED] wrote: Jasne... ale budu to psat cele od zacatku. Spise jestli uz neni neco hotoveho (at uz je to postavne na aspektech nebo ne) - a to se stale bavime pouze o overeni user in role. Ale cela ta maskarada okolo jako je security context je vec o neco slozitejsi. Tomas Hubalek napsal(a): To co chcete se da naprosto perfektne udelat pomoc AOP. Proste metode priradite aspekt, ktery to vynuti. -- Martin Beránek
Re: jaky security framework?
Co presne vam na jaas vadi? Me pripadlo jako super volba, narozdil od acegi - no flame ;-) 2007/7/9, Martin Beránek [EMAIL PROTECTED]: Zdravím konferenci, potřeboval bych doporučit něco jako security framework. Chtěl bych určité metody oběktů zabezpečit na uživatelské role. něco jako: public void someMethod() { Security.checkRole(admin,poweruser); ... ... ... } kde by Security.checkRole mohlo vyhodit nějakou SecurityException. koukal sem na jaas, ale tam se mi nelibi že jakmile to jednou zapnu, aplikuje se to všude. díky za návrhy -- Martin Beránek
Re: jaky security framework?
No já bych otázku postavil trochu jinak - co vám dá JAAS co nedokáže Acegi? no flame ;-) Ze své zkušenosti musím říct, že nasazení Acegi je otázka půl dne až jednoho dne bezproblémové a zábavné práce. Odměnou jsou pak takové vítané drobnůstky jako RememberMe funkcionalita zdarma, Channel procesing (zaručí přístup na konkrétní url buď pouze přes HTTPS nebo naopak jen HTTP) a perfektní extensibilita (což se u vendor specific věcí nedá moc očekávat). Vřele doporučuji Acegi - byť jsem ho zatím používal jen na autentizaci a nikoliv autorizaci. Honza N. -- Ing. Jan Novotný @@ http://blog.novoj.net Myšlenky dne otce Fura -- Pa Ko napsal(a): Co presne vam na jaas vadi? Me pripadlo jako super volba, narozdil od acegi - no flame ;-) 2007/7/9, Martin Beránek [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]: Zdravím konferenci, potřeboval bych doporučit něco jako security framework. Chtěl bych určité metody oběktů zabezpečit na uživatelské role. něco jako: public void someMethod() { Security.checkRole(admin,poweruser); ... ... ... } kde by Security.checkRole mohlo vyhodit nějakou SecurityException. koukal sem na jaas, ale tam se mi nelibi že jakmile to jednou zapnu, aplikuje se to všude. díky za návrhy -- Martin Beránek
Re: jaky security framework?
Fajn :) nejsem si tim jist, ale rekl bych ze acegi nedokaze neco jako superuser mod. Myslim tim, ze jaas je primo intergrovany do javy, muzu timpadem spustit kod treba s opravnenim allpermission. Pro nekoho to muze byt nevyhoda, me to prijde jako vyhoda :) No a s tim dratovanim - da se to udelat pomoci proxy trid, ale tipoval bych, ze urcite bude nekde k nalezeni nejakej weaver, kterej bude brat xml konfiguraci a nacitat zabezpecene tridy... 9.7.07, Rodina Novotných [EMAIL PROTECTED]: No já bych otázku postavil trochu jinak - co vám dá JAAS co nedokáže Acegi? no flame ;-) Ze své zkušenosti musím říct, že nasazení Acegi je otázka půl dne až jednoho dne bezproblémové a zábavné práce. Odměnou jsou pak takové vítané drobnůstky jako RememberMe funkcionalita zdarma, Channel procesing (zaručí přístup na konkrétní url buď pouze přes HTTPS nebo naopak jen HTTP) a perfektní extensibilita (což se u vendor specific věcí nedá moc očekávat). Vřele doporučuji Acegi - byť jsem ho zatím používal jen na autentizaci a nikoliv autorizaci. Honza N. -- Ing. Jan Novotný @@ http://blog.novoj.net Myšlenky dne otce Fura -- Pa Ko napsal(a): Co presne vam na jaas vadi? Me pripadlo jako super volba, narozdil od acegi - no flame ;-) 2007/7/9, Martin Beránek [EMAIL PROTECTED] : Zdravím konferenci, potřeboval bych doporučit něco jako security framework. Chtěl bych určité metody oběktů zabezpečit na uživatelské role. něco jako: public void someMethod() { Security.checkRole(admin,poweruser); ... ... ... } kde by Security.checkRole mohlo vyhodit nějakou SecurityException. koukal sem na jaas, ale tam se mi nelibi že jakmile to jednou zapnu, aplikuje se to všude. díky za návrhy -- Martin Beránek
Re: jaky security framework?
http://acegisecurity.org/ Martin Beránek napsal(a): Zdravím konferenci, potřeboval bych doporučit něco jako security framework. Chtěl bych určité metody oběktů zabezpečit na uživatelské role. něco jako: public void someMethod() { Security.checkRole(admin,poweruser); ... ... ... } kde by Security.checkRole mohlo vyhodit nějakou SecurityException. koukal sem na jaas, ale tam se mi nelibi že jakmile to jednou zapnu, aplikuje se to všude. díky za návrhy -- S pozdravem Roman Dagi Pichlik /* http://www.sweb.cz/pichlik/ Blog pro kodery */
Re: RMI security manager, DB
No tak to vypada, ze tenhle problem nastava pac pouzivam Spring aten nejak vnitrne nepodporuje security context a remote transaction, jak pisi v prvnim odstavci o RMI. Takze asi budu muset pochopit a skrotit Acegi Security. Mate nekdo s nim zkusenosti? Lukas benzin Benda ([EMAIL PROTECTED]; http://benzin.bloguje.cz) Java a Delphi programator PHP a JavaScript skrypter Tvurce databazovych aplikaci A cestinarsky ignorant Tak pri svych pokusech o rozchozeni RMI sem se dostal az do bodu, kdy propreneseni hlavniho objektu, potrebuji nastavit SecurityManager Tohle mi to pise kdyz ho nemam nastaveny (na strane klienta): java.lang.ClassNotFoundException: cz.apnetis.jhasevid.db.DBSupport (no security manager: RMI class loader disabled)] Takze jsem nastavil standardni RMISecurityManager: System.setSecurityManager(new RMISecurityManager()); Bohuzel ted se mi nerozbehne server protoze konci s chybou: NoClassDefFoundError: could not initialize class org.firebirdsql.pool.FBConnectionPoolDataSource Cely vypis chyby je radikalne delsi, ale zbytek uz je jenom: Objekt se neporadilo vytvorit, protoze nebyl vytvoren objekt, ktery nebyl vytvoren protoze , az nakonec je vise zminena hlaska. Pritom, kdyz security manager nastaveny neni, tak mi to tu chybu nehlasi (nehlasi ji to, ani kdyz je to skompilovane jako stand alone, verze v jednom baliku). Nejak presne nechapu podstatu security manageru, a proc mi to nepovoli vytvorit connection pool. Umite mi nekdo pomoct? Lukas benzin Benda ([EMAIL PROTECTED]; http://benzin.bloguje.cz) Java a Delphi programator PHP a JavaScript skrypter Tvurce databazovych aplikaci A cestinarsky ignorant
RMI security manager, DB
Tak pri svych pokusech o rozchozeni RMI sem se dostal az do bodu, kdy propreneseni hlavniho objektu, potrebuji nastavit SecurityManager Tohle mi to pise kdyz ho nemam nastaveny (na strane klienta): java.lang.ClassNotFoundException: cz.apnetis.jhasevid.db.DBSupport (no security manager: RMI class loader disabled)] Takze jsem nastavil standardni RMISecurityManager: System.setSecurityManager(new RMISecurityManager()); Bohuzel ted se mi nerozbehne server protoze konci s chybou: NoClassDefFoundError: could not initialize class org.firebirdsql.pool.FBConnectionPoolDataSource Cely vypis chyby je radikalne delsi, ale zbytek uz je jenom: Objekt se neporadilo vytvorit, protoze nebyl vytvoren objekt, ktery nebyl vytvoren protoze , az nakonec je vise zminena hlaska. Pritom, kdyz security manager nastaveny neni, tak mi to tu chybu nehlasi (nehlasi ji to, ani kdyz je to skompilovane jako stand alone, verze v jednom baliku). Nejak presne nechapu podstatu security manageru, a proc mi to nepovoli vytvorit connection pool. Umite mi nekdo pomoct? Lukas benzin Benda ([EMAIL PROTECTED]; http://benzin.bloguje.cz) Java a Delphi programator PHP a JavaScript skrypter Tvurce databazovych aplikaci A cestinarsky ignorant
Re: security reflection
Kamzik-II wrote: No tak mel bych jeste jeden dotaz co se tyce bezpecnosti, ted to trosku souvisi s reflection api. Jde mi o to, jestli musi normalni aplikace mit nejaka specialni prava, aby mohla provadet unsafe operace s promennymi objektu. Pri normalnim pouzivani reflection se kontroluje zapouzdreni (private, protected) beznym zpusobem. Tuto kontrolu lze vypnout metodou setAccessible(true) (ve tride AccessibleObject, od ktere dedni Method, Constructor i Field). Tato metoda kontroluje permission java.lang.reflect.ReflectPermission(suppressAccessChecks). Jako normalne mi to na desktopu funguje, v klidu menim jakekoliv pormenne, vcetne private, ale zajima me, jestli to bude fungovat vzdy, a pripadne kdy to fungovat nebude... JRE knihovna pouziva pro interni kontrolu prav System.getSecurityManager(). To je predevsim z duvodu zpetne kompatability, ale take to umoznuje vsechny tyto kontroly vypnout. Defaultne spustena aplikace totiz zadny security manager nema a vsechny tyto kontroly se preskakuji (viz napr. zdrojovy kod AccessibleObject.setAccessible()). To je logicke, sandbox je na desktopu (a vetsinou i na serveru) zbytecny, spoleha se na operacni system. -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
Dobry den, Nie som si isty ci JEE alebo JSE nieco maju, ale vsak si to mozete sam naprogramovat pomocou java reflection API. Martin Krajci Kamzik-II wrote: Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
RE: security
A nepomohlo by niečo takéto: SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkConnect(String host, int port); // napr. kontrola na socket } Bedo. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-II Sent: 20. júla 2006 13:10 To: Java Subject: Re: security Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
Podivejte se na JAAS, ta v sekci autorizace neco takoveho definuje. Souvisi to s Java sandboxem ktery je soucasti JVM a umoznuje omezit prostredi ve kterem aplikace bezi (zakazat nektere operace atp.). Vlastik Martin Krajci napsal(a): Dobry den, Nie som si isty ci JEE alebo JSE nieco maju, ale vsak si to mozete sam naprogramovat pomocou java reflection API. Martin Krajci Kamzik-II wrote: Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ -- Ing. Vlastimil EliasQbizm technologies, a.s. vedouci analytik... the art of software. www.qbizm-technologies.czwww.qbizm.cz www.qbizm-services.cz
Re: security
Takze bez nejakeho frameworku treti strany to nejde? Ale samozrejme, Acegi je zde naprosto zbytecny moloch. Jedina vyhoda jeho pouziti je, ze lze pomoci Spring AOP zadratovat kotrolu deklarativne, bez zmeny kodu. a to se vam zda malo?! Me se naopak zda jako naprosty moloch pouziti napriklad JAASu, ale evidentne je to vec nazoru... -- S pozdravem Roman Dagi Pichlik /* http://www.sweb.cz/pichlik/ Blog pro kodery */ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
Mohl byste uvest nejaky priklad? Tohle reseni by mozna bylo ono, ale nedovedu si predstavit realizaci, jak by to zhruba fungovalo? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 1:19 PM Subject: Re: security Dobry den, Nie som si isty ci JEE alebo JSE nieco maju, ale vsak si to mozete sam naprogramovat pomocou java reflection API. Martin Krajci Kamzik-II wrote: Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
No me se zda zbytecne tahat sebou nejakou dalsi knihovnu, kdyz se to da vyresit i jinak za spoluprace standartnich java api... - Original Message - From: Roman Pichlik [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 1:25 PM Subject: Re: security Takze bez nejakeho frameworku treti strany to nejde? Ale samozrejme, Acegi je zde naprosto zbytecny moloch. Jedina vyhoda jeho pouziti je, ze lze pomoci Spring AOP zadratovat kotrolu deklarativne, bez zmeny kodu. a to se vam zda malo?! Me se naopak zda jako naprosty moloch pouziti napriklad JAASu, ale evidentne je to vec nazoru... -- S pozdravem Roman Dagi Pichlik /* http://www.sweb.cz/pichlik/ Blog pro kodery */ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
No me se zda zbytecne tahat sebou nejakou dalsi knihovnu, kdyz se to da vyresit i jinak za spoluprace standartnich java api... To se samzorejme da, ale otazka je jestli to je tak efektivni a primocare. Kdyby se vsechno resilo pomoci standardnich API Javy, tak by tu nebyl zadny progress ve vyvoji Javy jako takove prikaldem budiz EJB 3.0. Ja vam nechci to ACEGI nijak vnucovat, ale prijde mi docela silne, ze si pomoci anotace/xdoclet tagu zadefinuju roli, ktera muze dany kod invokovat a o nic vic se nestarate. -- S pozdravem Roman Dagi Pichlik /* http://www.sweb.cz/pichlik/ Blog pro kodery */ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
RE: security
Presne tak som to myslel. Dagi-ho návrh na ACEGI bude určite komfortnejší a variabilnejší, takže otázka zostáva na čo to má byť použité. Pokiaľ to má byť viazané na prihláseného užívateľa, tak sa samozrejme SecurityManager nedá použiť. Bedo. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-II Sent: 20. júla 2006 13:42 To: Java Subject: Re: security Jakoze bych natvrdo odriznul lidi, co spousti aplikaci bez security manageru? - Original Message - From: Rastislav Siekel [EMAIL PROTECTED] To: 'Java' konference@java.cz Sent: Thursday, July 20, 2006 1:22 PM Subject: RE: security A nepomohlo by niečo takéto: SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkConnect(String host, int port); // napr. kontrola na socket } Bedo. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-II Sent: 20. júla 2006 13:10 To: Java Subject: Re: security Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
Roman Pichlik wrote: Takze bez nejakeho frameworku treti strany to nejde? Ale samozrejme, Acegi je zde naprosto zbytecny moloch. Jedina vyhoda jeho pouziti je, ze lze pomoci Spring AOP zadratovat kotrolu deklarativne, bez zmeny kodu. a to se vam zda malo?! Neni, Spring je uzitecna vec. Ale davat ho do aplikace jen tomuto? Zalezi na tom, kolik tech kontrol bude. Pokud jedna ci dve, tak je zbytecne kvuli tomu tam davat cely Spring, ne? A pouzit Acegi bez Springu mi prijde jako nesmysl. Me se naopak zda jako naprosty moloch pouziti napriklad JAASu, ale evidentne je to vec nazoru... JAAS je samozrejme jeste horsi a hlavne resi neco trochu jineho: autentikaci a autorizaci uzivatelu. Zatimco puvodni tazatek chtel (pokud to dobre chapu) resit prava aplikace, tedy sandbox. Doporucuji precist si neco o bezpecnostnim/sandbox modelu v Jave - tedy to co drive (Java 1) byval SecurityManager (udrzovan jen jako wrapper pro ucely kompatability) a pozdeji (Java 2, to uz je dost dlouho) nahrazeno AccessController/Permission. Napriklad: http://www.securingjava.com/chapter-three/chapter-three-7.html Nebo primo dokumentace k JDK, pripadne dalsi dokumenty na strankach SUNu. -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Kamzik-II wrote: Takze by pak vlastne stacilo napsat public interface, package private tridu s implementaci a pak jenom napsat verejnej decorator, kterej by filtroval ty prava? Mozna by to chtelo se poradne rozepsat, podle ceho vlastne chcete ta prava posuzovat a jaka to budou. Mozna ze jsem se svymi radami zcela mimo misu... -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
No melo by to byt vazane na prihlaseneho uzivatele, ja sem prave mel vizi, ze by to mohlo byt realizovane prave pomoci security manageru, a pomoci jaas by se danej uzivatel jenom autorizoval. Jestli jsem autorizaci pochopil spravne, tak proste jenom prida prava pouzite aplikaci, ne? Takze by to takhle melo jit... - Original Message - From: Rastislav Siekel [EMAIL PROTECTED] To: 'Java' konference@java.cz Sent: Thursday, July 20, 2006 1:58 PM Subject: RE: security Presne tak som to myslel. Dagi-ho návrh na ACEGI bude určite komfortnejší a variabilnejší, takže otázka zostáva na čo to má byť použité. Pokiaľ to má byť viazané na prihláseného užívateľa, tak sa samozrejme SecurityManager nedá použiť. Bedo. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-II Sent: 20. júla 2006 13:42 To: Java Subject: Re: security Jakoze bych natvrdo odriznul lidi, co spousti aplikaci bez security manageru? - Original Message - From: Rastislav Siekel [EMAIL PROTECTED] To: 'Java' konference@java.cz Sent: Thursday, July 20, 2006 1:22 PM Subject: RE: security A nepomohlo by niečo takéto: SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkConnect(String host, int port); // napr. kontrola na socket } Bedo. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-II Sent: 20. júla 2006 13:10 To: Java Subject: Re: security Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
Kdyz uz jsme u toho sandboxu, tak ten je mi celkem jasnej, ale zajimalo by me jak se resi to, aby se aplikace dala spustit jenom v omezenem modu, to by se resilo pres zavislost na securitymanageru? - Original Message - From: Kamil Podlesak [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 1:57 PM Subject: Re: security Roman Pichlik wrote: Takze bez nejakeho frameworku treti strany to nejde? Ale samozrejme, Acegi je zde naprosto zbytecny moloch. Jedina vyhoda jeho pouziti je, ze lze pomoci Spring AOP zadratovat kotrolu deklarativne, bez zmeny kodu. a to se vam zda malo?! Neni, Spring je uzitecna vec. Ale davat ho do aplikace jen tomuto? Zalezi na tom, kolik tech kontrol bude. Pokud jedna ci dve, tak je zbytecne kvuli tomu tam davat cely Spring, ne? A pouzit Acegi bez Springu mi prijde jako nesmysl. Me se naopak zda jako naprosty moloch pouziti napriklad JAASu, ale evidentne je to vec nazoru... JAAS je samozrejme jeste horsi a hlavne resi neco trochu jineho: autentikaci a autorizaci uzivatelu. Zatimco puvodni tazatek chtel (pokud to dobre chapu) resit prava aplikace, tedy sandbox. Doporucuji precist si neco o bezpecnostnim/sandbox modelu v Jave - tedy to co drive (Java 1) byval SecurityManager (udrzovan jen jako wrapper pro ucely kompatability) a pozdeji (Java 2, to uz je dost dlouho) nahrazeno AccessController/Permission. Napriklad: http://www.securingjava.com/chapter-three/chapter-three-7.html Nebo primo dokumentace k JDK, pripadne dalsi dokumenty na strankach SUNu. -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Kamzik-II wrote: No melo by to byt vazane na prihlaseneho uzivatele, ja sem prave mel vizi, ze by to mohlo byt realizovane prave pomoci security manageru, a pomoci jaas by se danej uzivatel jenom autorizoval. Jestli jsem autorizaci pochopil spravne, tak proste jenom prida prava pouzite aplikaci, ne? Takze by to takhle melo jit... Aha, tak to jste to pochopil spatne, prava aplikace jsou neco uplne jineho. Acegi je asi nejlepsi rada, pouziti samotneho JAAS je velmi neprakticke (hodne prace s psanim kodu okolo, konfigurace se ani neda korektne ohodnotit bez vulgarnich vyrazu). -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Dobre, takze melo by jit defacto treba o odebirani clanku, takze je to zalozene na prihlasovani uzivatele a na kontrole jeho pristupovych prav. Slo mi vlastne jenom o to, jestli si musim v implementaci kazde tridy, psat overovani, nebo jestli by nestacilo, jenom nejak vyuzit standartnich Permission-based reseni. - Original Message - From: Kamil Podlesak [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 2:02 PM Subject: Re: security Kamzik-II wrote: Takze by pak vlastne stacilo napsat public interface, package private tridu s implementaci a pak jenom napsat verejnej decorator, kterej by filtroval ty prava? Mozna by to chtelo se poradne rozepsat, podle ceho vlastne chcete ta prava posuzovat a jaka to budou. Mozna ze jsem se svymi radami zcela mimo misu... -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
No ja jsem si to acegi stahnul a vicemene mi to prislo strasne chaoticke, abych pravdu rekl, tak ten tutorial mi prave vubec neprisel jako tutorial, ale jako pokus o nacpeme tam teho co nejvic, aby lidi videli, ze je to cool :) - Original Message - From: Kamil Podlesak [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 2:09 PM Subject: Re: security Kamzik-II wrote: No melo by to byt vazane na prihlaseneho uzivatele, ja sem prave mel vizi, ze by to mohlo byt realizovane prave pomoci security manageru, a pomoci jaas by se danej uzivatel jenom autorizoval. Jestli jsem autorizaci pochopil spravne, tak proste jenom prida prava pouzite aplikaci, ne? Takze by to takhle melo jit... Aha, tak to jste to pochopil spatne, prava aplikace jsou neco uplne jineho. Acegi je asi nejlepsi rada, pouziti samotneho JAAS je velmi neprakticke (hodne prace s psanim kodu okolo, konfigurace se ani neda korektne ohodnotit bez vulgarnich vyrazu). -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Kamzik-II wrote: Kdyz uz jsme u toho sandboxu, tak ten je mi celkem jasnej, ale zajimalo by me jak se resi to, aby se aplikace dala spustit jenom v omezenem modu, to by se resilo pres zavislost na securitymanageru? Prava prirazena kodu se konfiguruji v JRE podle umisteni (umisteni JARu/adresare) nebo podle certifikatu kterym je JAR podepsan. Prava jsou prirazena kodu, nikoliv aplikaci (v ramci aplikace muze mit kod ruzna prava). Konfigurace je v JRE, systemovy uzivatel ale muze mit vlastni. Vice viz odkazy, ktere jsem daval (neni toho malo a navic je to evidentne neco jineho nez potrebujete). Napriklad: http://www.securingjava.com/chapter-three/chapter-three-7.html Nebo primo dokumentace k JDK, pripadne dalsi dokumenty na strankach SUNu. -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Prava jsou prirazena kodu. Tomu mam rozumet jakoze pokud bych mel v aplikace trusted knihovnu, tak bych pres ni mohl delat bordel i kdyz muj kod neni trusted? - Original Message - From: Kamil Podlesak [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 2:15 PM Subject: Re: security Kamzik-II wrote: Kdyz uz jsme u toho sandboxu, tak ten je mi celkem jasnej, ale zajimalo by me jak se resi to, aby se aplikace dala spustit jenom v omezenem modu, to by se resilo pres zavislost na securitymanageru? Prava prirazena kodu se konfiguruji v JRE podle umisteni (umisteni JARu/adresare) nebo podle certifikatu kterym je JAR podepsan. Prava jsou prirazena kodu, nikoliv aplikaci (v ramci aplikace muze mit kod ruzna prava). Konfigurace je v JRE, systemovy uzivatel ale muze mit vlastni. Vice viz odkazy, ktere jsem daval (neni toho malo a navic je to evidentne neco jineho nez potrebujete). Napriklad: http://www.securingjava.com/chapter-three/chapter-three-7.html Nebo primo dokumentace k JDK, pripadne dalsi dokumenty na strankach SUNu. -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Kamzik-II wrote: Prava jsou prirazena kodu. Tomu mam rozumet jakoze pokud bych mel v aplikace trusted knihovnu, tak bych pres ni mohl delat bordel i kdyz muj kod neni trusted? S tim se samozrejme pocita (koneckoncu, standardni knihovna je zcela trusted). Efektivni prava v koamziku kontroly jsou prunikem prav vseho kodu na zasobniku. Takze to pak vypada zasobnik napriklad takto: UntrustableApp.main(): omezena prava, nema pravo BordelPermission TrustableLibrary.doBordel() : plna prava, tedy vcerne BordelPermission AccessController.checkPermission(new BordelPermission()) : zjisti prunik, pravo nema, vyjimka Pokud trusted kod potrebuje provest neco na co volajici nemusi mit prava a je si jisty ze je to OK (napriklad precist konfigurak, ktery je jinak duverny a apletum skryty), muze pouzit AccessController.doPrivileged() metody. -- Kamil Podlesak [EMAIL PROTECTED]
Re: security
Dobry den, Skusil som to nacrtnut ako by to mohlo byt riesene cez reflection API, ale pripominam ze trebalo by tam viacej veci podotahovat, hlavne teda krajsie vytvaranie instancii (Foo) a implementovat isUserInRole, ale princip je tam zachyteny. Osobne by som sa priklonil za to Acegi ako sme to tu uz viac krat spominali. code import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class MethodInvoker { public static void main(String[] argv) { MethodInvoker mi = new MethodInvoker(); mi.test(); } public void test() { InvocationHandler handler = new FacadeInvocationHandler(new Foo()); IFoo f = (IFoo) Proxy.newProxyInstance(Foo.class.getClassLoader(), new Class[] { IFoo.class }, handler); f.call(); } /** * Very simple facade which delegates all calls to a target object. */ private static class FacadeInvocationHandler implements InvocationHandler { Object facaded; public FacadeInvocationHandler(Object facaded) { this.facaded = facaded; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if(isUserInRole()) { return method.invoke(facaded, args); } else { return null; } } } private static boolean isUserInRole() { return true; } interface IFoo { public void call(); } class Foo implements IFoo { public void call() { System.out.print(Called); } } } /code Martin Krajci Kamzik-II wrote: Mohl byste uvest nejaky priklad? Tohle reseni by mozna bylo ono, ale nedovedu si predstavit realizaci, jak by to zhruba fungovalo? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 1:19 PM Subject: Re: security Dobry den, Nie som si isty ci JEE alebo JSE nieco maju, ale vsak si to mozete sam naprogramovat pomocou java reflection API. Martin Krajci Kamzik-II wrote: Takze bez nejakeho frameworku treti strany to nejde? - Original Message - From: Martin Krajci [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 10:43 AM Subject: Re: security Dobry den, Pozrite si http://www.acegisecurity.org/ a konkretne 'method invocation security'. Acegi sa da pouzit aj bez Springu aby ste toho nemali na zaciatok moc. Martin Krajci Kamzik-II wrote: Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu Xyz, která obsahuje mimo jiné i metodu necoUdelej. Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ( Hotovo ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException... __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __ __ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email __
Re: security
Kamzik-II wrote: Aha, takze normalne to nejde, ale pokud by ta knihovna mela nejakej zajem poskytnout to i netrusted aplikaci, tak proste bude soucasti implementace volani doTrusted? Pochopil jsem to spravne? A vse probehne zcela v poradku a bez vyjimky, kdezto pokud by tam nebylo AccessController.doPrivileged(), taky by nastala vyjimka, je to tak? :) Ano. Tomu doPrivileged se jako parametr preda objekt s tim kodem (neco jako Runnable) a JVM na nem zavola metodu run() s takovymi pravy, jaka ma primy volajici (TrustedClass). -- Kamil Podlesak [EMAIL PROTECTED] inSITE, s.r.o.
Re: security
Dobry, uz jsem zacal mit pochybnosti o bezpecnosti knihoven :) Ok, tak diky za osvetleni - Original Message - From: Kamil Podlesak [EMAIL PROTECTED] To: Java konference@java.cz Sent: Thursday, July 20, 2006 4:49 PM Subject: Re: security Kamzik-II wrote: Aha, takze normalne to nejde, ale pokud by ta knihovna mela nejakej zajem poskytnout to i netrusted aplikaci, tak proste bude soucasti implementace volani doTrusted? Pochopil jsem to spravne? A vse probehne zcela v poradku a bez vyjimky, kdezto pokud by tam nebylo AccessController.doPrivileged(), taky by nastala vyjimka, je to tak? :) Ano. Tomu doPrivileged se jako parametr preda objekt s tim kodem (neco jako Runnable) a JVM na nem zavola metodu run() s takovymi pravy, jaka ma primy volajici (TrustedClass). -- Kamil Podlesak [EMAIL PROTECTED] inSITE, s.r.o.
security reflection
No tak mel bych jeste jeden dotaz co se tyce bezpecnosti, ted to trosku souvisi s reflection api. Jde mi o to, jestli musi normalni aplikace mit nejaka specialni prava, aby mohla provadet unsafe operace s promennymi objektu. Jako normalne mi to na desktopu funguje, v klidu menim jakekoliv pormenne, vcetne private, ale zajima me, jestli to bude fungovat vzdy, a pripadne kdy to fungovat nebude...
security
Zdravicko lidi, Potreboval byh poradit :) Rekneme, ze mam tridu "Xyz", která obsahuje mimo jiné i metodu "necoUdelej". Treba takhle: public class Xyz { public void necoUdelej () { System.out.println ("Hotovo" ); } } A potreboval bych nejak zajistit, aby se ta metoda provedla jenom pokud je pouzita v aplikaci, ktera je spustena, s nejakymi pravy, jinak aby vyhodila SecurityException...
WS-Security : .NET server, Java client
Zdravim vsechny, resim problem volani webove sluzby implementovane v .NET z Java klienta. Server vyzaduje vyuziti WS-Security. Tapu v tom, jakou knihovnu pouzit pro generovani stubu. Posledni verze JAX-RPC a Axisu pouzivaji (alespon ja to tomu tak rozumim) WS-Security standardizovane loni u OASIS. Dotceny server vsak pouziva jakesi WSE 1.0 (Web Service Enhancment), coz je pravdepodobne predchudce zminovaneho standardu. Z komunikace jsem vypozoroval rozdil v jmennem prostoru - server vyzaduje tohle : wsse:Security soap:mustUnderstand=1 xmlns:wsse=http://schemas.xmlsoap.org/ws/2002/07/secext; a vsechno novejsi odmita. Microsoft uvadi nejaky postup na teto adrese http://msdn.microsoft.com/webservices/webservices/building/wse/default.aspx?pull=/library/en-us/dnwse/html/wsejavainterop.asp, bohuzel knihovna WSTK 3.3.2 neni uz u IBM dostupna. Nemate nekdo k dispozici WSTK 3.3.2 ? Pripadne, pokud se s tim uz nkdo z vas setkal, lze u novejsich toolu nastavit nejaky mod kompatibility ? Nebo nemate radu, jak co nejjednoduseji zprovoznit Java klienta proti MS sluzbe ? Diky za pozoronost. Tom.
Re: více než jeden security-constraint ve web -inf
Napsat vice security-constraint sekci jde, viz Servlet API 2.4 specification, priklad v casti 13.5.2. na strane 153. (Neni to na webu, musite si ono PDF stahnout a rozbalit). Ale pokud tomu dobre rozumim, nejde mit vic nez jeden realm, tj. jinou databazi administratoru a jinou dealeru. Nicmene to neni nutne, staci prece jeden realm a dve role. Takze takhle: security-constraint web-resource-collection web-resource-nameAdministrace/web-resource-name descriptionAdministrace pro web/description url-pattern/admin/*/url-pattern /web-resource-collection auth-constraint role-nameAdmin/role-name /auth-constraint /security-constraint security-constraint web-resource-collection web-resource-nameDealeři/web-resource-name descriptionDealerská sekce/description url-pattern/dealer/*/url-pattern /web-resource-collection auth-constraint role-nameDealer/role-name /auth-constraint /security-constraint login-config auth-methodBASIC/auth-method realm-nameWEB - admini i dealeri/realm-name /login-config security-role role-nameAdmin/role-name role-nameDealer/role-name /security-role Makub Jiri Chaloupka wrote: Dobrý den, řešil jste někdo jak udělat více security-constraints ve web aplikaci? Teoreticky by to mělo jít, ale nemohu se dobrat k funkční konfiguraci. Něco jako: security-constraint web-resource-collection web-resource-nameAdministrace/web-resource-name descriptionAdministrace pro web/description url-pattern/admin/*/url-pattern http-methodGET/http-method http-methodPOST/http-method /web-resource-collection auth-constraint role-nameAdmin/role-name /auth-constraint web-resource-collection web-resource-nameDealeři/web-resource-name descriptionDealerská sekce/description url-pattern/dealer/*/url-pattern http-methodGET/http-method http-methodPOST/http-method /web-resource-collection auth-constraint role-nameDealer/role-name /auth-constraint /security-constraint login-config auth-methodBASIC/auth-method realm-nameWEB - Administrace/realm-name /login-config login-config auth-methodBASIC/auth-method realm-nameWEB - Dealeři/realm-name /login-config security-role role-nameAdmin/role-name /security-role security-role role-nameDealer/role-name /security-role Takto napsané je to samozřejmě hloupost, jen nevím kudy se ubírat aby to dalo smysl. Na googlu jsem asi zadával špatný dotaz :( Samozřejmě jde rozdělit aplikaci do více warů, ale tomu bych se chtěl v danou chvíli vyhnout ... Díky Jirka -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 -- smime.p7s Description: S/MIME Cryptographic Signature