Great questions. Let me reply back in reverse:

Attribute filters are  in fact a property of registered services. Note this line a bit further down:
`registeredService.getAttributeFilter().filter(principal.getId(), attributesToRelease);`

Configuring attribute filters are now done via xml fragments of the svc registry. They are not yet supported by the mgmt webapp UI, and that's a good point. We should think about supporting filter configuration in that UI as well.

Now to the case of `RegisteredServiceDefaultAttributeFilter`:

* Attribute filters that are associated with services, filter attributes based on their *values*
* The default attribute filter that apples to all services, filters attributes based on their *name*, so that only allowed attributes are released for the service.

and:
* Attribute filters that are associated with services do not require an instance of the registered service. They care about *values* only.
* The default attribute filter that apples to all services requires access to the registered service in-process.

You're perfectly right about creating many instances of `RegisteredServiceDefaultAttributeFilter`. The alternatives:

* Remove the class. Move everything into a static method inside `CASImpl`
* Keep the class, but not implement `RegisteredServiceAttributeFilter`. Move everything into a static method inside the class.

Suggestions?