In essence our DNA applications are three-tiered, providing a client layer, a business rules layer, and a data store layer. However, in reality, there are several individual components within the business rules layer that have to be able to communicate with each other. We're talking about components in the widest sense here—they could be custom compiled components (in VB, C++ or Java, for example), Service software such as ODBC drivers, ASP scripts, etc.
These components pass information back and forth, and can create instances of other components in order to use their services. Ultimately, they will talk to a data store of some kind, perhaps through a message queue. Alternatively, they may interface with legacy systems via SNA Server or a similar bridging software layer. At each point of contact along the line, there will be a check that the calling component has the appropriate Windows NT authorization to use the services of the next component.
However, DNA (through MTS, MSMQ, SQL Server, etc.) defines ways of configuring each component-to-component interface to provide two big advantages:
We'll see how this is achieved in the remainder of this chapter.
In the following diagram, you can see the most common interfaces where the authentication and checking of permissions is applied:
The numbers in the diagram represent:
Integrated security with SQL Server and IIS on different machines has certain caveats applied to it. Resources that require Challenge/Response authentication to access resources on another physical NT machine will not be able to do so unless the machine running IIS is a domain controller. This implies that you will not be able to connect to SQL Server on another physical NT machine if the IIS Machine is not the controller for the domain. In this case, basic authentication can be used instead of Challenge/Response, and users won’t be able to access Web pages and connect to the SQL Server with their NT user accounts. This limitation ties back to the inability to delegate. When IIS attempts to make the Name Pipes connection to SQL Server, it will not be able to encrypt a token because it does not have the user’s password necessary as the encryption key.
The important point to realize is that the account used to access components or services downstream from the user does not have to be the actual user's account. This works in much the same way as when we map multiple users to a single Windows NT account within IIS—either with Certificates or through the anonymous IUSR account. In our DNA application, we can use the features of MTS to map multiple users to one or more Windows NT accounts that are created solely with the purpose of accessing downstream components and resources.
All this swapping of account contexts may seem like it's only making the whole process more complex. Of course, when you are logged on as the system administrator, or if you haven't enabled security on the components and the services they use, there's no problem—it all runs like clockwork. In the next section we'll see how we make sure it still runs like clockwork when we come to deploy it in the 'real world'.