https://github.com/geoserver/geoserver/wiki/GSIP-159

GeoServer currently uses a rather ugly and brittle mechanism to apply
data security (Certain users should only be able to view certain layers
or certain parts of layers) to the service endpoints of its internal GWC
instance.

This proposal is to add an API to GeoWebCache to do security checks
which GeoServer can extend to apply its own security rules deeper inside
GWC, after the service endpoints have parsed the request into a
universal Conveyor object.


Filter to check that the request is allowed.

|interface SecurityFilter { public void checkSecurity(TileLayer layer,
BoundingBox extent, SRS srs, Object securityContext) throws
SecurityException; } |

Extension point that the |GeoWebCacheDispatcher| can call to generate
appropriate security context object to be stored on the resulting |Conveyor|

|interface SecurityContextProvider<Context> { public Context
getSecurityContext(HttpRequest request) } |

Add accessors for a |securityContext| property to |Conveyor|.
|GeoWebCacheDispatcher| calls |Service.getConveyor| to get a |Conveyor|,
then handles it. The context would be attached in between those steps.

|conv = service.getConveyor(request, response); securityContext =
securityContextProvider.getSecurityContext(request);
conv.setSecurityContext(securityContext); |

Add a |SecurityException| class. Allow it to wrap another exception so
it can wrap the GeoServer one, which might then be extracted if need be.
Amend method signatures to allow throwing this exception.


-- 
Kevin Michael Smith
<smit...@draconic.ca>

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to