Logic Flow of Security Processing

MPS provides a flexible model for namespace developers to dictate which security principal an action will be performed under. It is important when designing components for MPS to take this model into account and use it to define the most secure service possible. While elevation of privilages is sometimes required to perform complex provisioning tasks in a shared environment, its should be used rarely.

The following table summarizes the logic flow of security processing for provisioning requests in Microsoft Provisioning Framework (MPF).

Table: Example Procedure and Truth Table

Value of @impersonate Basic Authentication Credential securityContext "Execute as" User on Procedure 2 Value of @Impersonate Resulting User Context
0 Irrelevant (not used even if specified) Irrelevant (not used even if specified) 0 MPFServiceAcct
1 Basic authentication user NULL 0 Basic authentication credentials
1 NULL NULL 0 Calling user
2 Irrelevant (not used even if specified) Not used 0 MPFServiceAcct
Not specified Basic authentication user NULL 1 Basic authentication Credentials
Not specified NULL NULL 1 Calling user
Not specified Irrelevant (not used even if specified) Irrelevant (not used even if specified) 2 MPFServiceAcct
1 Irrelevant (not used even if specified) "Execute as" user 0 "Execute as" user
Not specified Irrelevant (not used even if specified) "Execute as" user 1 "Execute as" user

The Result column of the preceding table lists the account under which MPF would run Procedure3 in the following example, given various combinations of @impersonate, "execute as" credentials, and a basic authentication credential in the request passed to procedure 1.

<namespace name="namespace1">
  <procedure name="Procedure1">
	<execute procedure="Procedure2" namespace="Namespace1" impersonate="0" /><!-column 1-->
  </procedure>
  <procedure name="Procedure2" >
	<execute procedure="Procedure3" namespace="Namespace2" impersonate="0"><!-column 2-->
  </procedure>
</namespace>

For more information on how security is implemented in MPF, see the other security topics covered in Security in Microsoft Provisioning Framework.