In order for middleware systems to be adaptive, their properties and services need to support a wide variety of application-specific policies. However, application developers and administrators should not be expected to cope with complex policy languages and evaluation engines or to develop custom engines from scratch. In this paper, we discuss the benefits of policy engines designed as component frameworks with a mix of parameterized pre-built and custom logic composed to implement complex policies. To provide an example of such a design approach, we present an authorization architecture for ASP.NET Web services that has been implemented in a real-world system. Categories and Subject Descriptors D.4.7 [Operating Systems]: Organization and Design – distributed systems. D.2.11 [Software Engineering]: Software tures – data abstraction, domain-specific architectures, information hiding, patterns. D.2.13 [Software Engineering]: Reusable Software – domain engineering, reuse models. G...