Puuh, long mail, answers inside Zitat von Andrea Aime <andrea.a...@geo-solutions.it>:
> On Wed, Jun 29, 2011 at 4:12 PM, <christian.muel...@nvoe.at> wrote: > >> In the meantime I have implemented xml and jdbc stores for user/group and >> role backend stores. The questions is how to integrate the configuration >> into gesoerver. >> >> 1) Work with with files and directories within GEOSERVER_DATA_DIR/security. >> I would use Java Properties serialized in XML. >> >> 2) Create CatalogInfo Objects and integrate the these configurations into >> the catalog. >> >> It should be possible to use REST to manage these backend stores. >> >> Or is it easier to start with 1) and defer 2). >> > > Let's start with 2. Nothing prevents you from using the CatalogInfo > interfaces, but what would be > the reason? One reason is that I need an object model to develop against, especially for the GUI and the REST API. I am talking here only about configuration parameters like the jdbc connect params I need for the jdbc backend for /user/groups/roles. Other config options are schema validating yes/no for the xml backend store, a boolean property "reentrant" which causes the creation of a locking wrapper and so on. Other possibilities would be to work with individual java BeainInfo objects for each backend store ore using properties, but I fear this will produce more code on the GUI and REST. I dislike both of them. Conclusion: I would like to have a proper object model for the configuration issues. > Security has been so far a orthogonal concern to data and service > configuration and mostly > transparent, that is, most of the code does not know there even is a > security layer, I believe > it should stay that way. Yep, it should, "orthogonal" is a very good expression. > CatalogInfo objects are instead known to the whole application, while you > can in theory change > the backend implementation everything works and plays against the > CatalogInfo sub-interface, > they define what we manage and what can be known about features, coverages > and the like. What about using the CatalogInfo interface without registering this objects into the catalog ?. We can discuss integration if you see the whole thing in action ? > > The security subsytem is a different kind of beast, what we can say we know > about users > is often just the user name: different implementations of the > authentication/authorization > subsytem could have or not explicit roles, roles could be, or not, plain > strings, for all > we know the "thing" that describes the user access rights could be a complex > data structure. > Spring Security is very generic about users for this reason I believe, a > Authentication > has credentials (a generic object), authorities (a list of objects) and > details (guess what, > an object). > > Now, of course the default implementation of the security subsystem needs to > know > something about the users, our current one says that a user has a list of > roles > which are strings for example. > And a new default implementation would be the same, but the notion that a > user > has a name and roles that are strings should be restricted to the specifics > of that > implementation (its management, its GUI, its rest interface), > without leaking in any other part of GeoServer. > So yeah, it could be made of CatalogInfo objects if you wish, I'm just > worried > that by seeing them as CatalogInfo there would be temptation to have them > known > in other parts of the system, to have the leak around. > Short outline: I have 4 main classes GeoserverUser implementing Spring UserDetails GeoserverUserGroup which is new GeoserverGrantedAuthority inherits Spring GrantedAuthority Additionally, there is an Interface GeoserverSecuritySystem which implements Spring UserDetailsService, a singleton is created by Spring injection. I took care that my classes behave like expected from Spring (studying the source code), only the calculation of UserDetails.getAuthorities is more complex, but this is not of interest to the spring security architecture. > Now, going back to persistence and REST. Those two are not necessarily > related, but > it helps to have the same persistence format, or at least a configurable one > that > can be bent to both usages, for those two. Yeah, I want the configuration objects to behave like other geoserver configuration objects. Individual files for backend implementations are independent. As an example, for the jdbc backend I need files for the DDL and the DML statements, no plan to make CatalogInfo objects for these files. > I'm not sure what the rationale is for using property files in xml format > though? > As far as I know the only advantage over plain property files is that you > can store > multibyte chars in them? I like the xml approach because of name spaces. As an example, I could combine the DDL xml file and the DML xml file into one xml file using 2 name spaces. If users dislike the xml property files, I could change that. > Another curiosity is, what about the network of security objects to be > stored > in 3-5 XML files that we were talking about last time the topic popped up? > What is the current implementation plan? There are 2 xml backends, one for user/group info and one for roles (GrantedAuthorities). The default deployment will have 2 xml files. > > Anyways, if you want to go property files I have nothing specific against > them, > though using XStream would have given you uniformity with how we already > manage configuration and rest resource encoding for the catalog, also with > interesting > bits on how to have the bits stored on disk relate to each other via ids, > whilst the > network format uses atom links in their place to ensure connectivity. Not sure what your are meaning here, I did not invest much time how CatalogInfo works. I will start at DataStoreInfo to understand the architecture. > > Did you already think about a REST api for managing users and permissions? > What would be the resources, their granularity and representation? In a first step, I only want to handle the configuration using REST, but at the end of the day, I plan to offer the same possibilities for the GUI and the REST API. > > Cheers > Andrea Summary: I will go on developing an object model for configuration issues based on CatalogInfo. I want to defer/avoid altering the Catalog interface, perhaps I implement something similar for the security subsystem. I fear that I will produce a "monster" patch, so I want to find some boundaries not preventing further integration in the future. I hope my English is clear enough, one of my sons insists on going to the playground, no time to reread, no chance at the moment :-) > > > -- > ------------------------------------------------------- > Ing. Andrea Aime > GeoSolutions S.A.S. > Tech lead > > Via Poggio alle Viti 1187 > 55054 Massarosa (LU) > Italy > > phone: +39 0584 962313 > fax: +39 0584 962313 > > http://www.geo-solutions.it > http://geo-solutions.blogspot.com/ > http://www.youtube.com/user/GeoSolutionsIT > http://www.linkedin.com/in/andreaaime > http://twitter.com/geowolf > > ------------------------------------------------------- > ---------------------------------------------------------------- This message was sent using IMP, the Internet Messaging Program. ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2d-c2 _______________________________________________ Geoserver-devel mailing list Geoserver-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geoserver-devel