title: What is the idea behind IIdentity and IPrincipal in .NET
body: <p>So, what is the purpose for existence of both <code>IIdentity</code> and <code>IPrincipal</code>, and not some <code>IIdentityMergedWithPrincipal</code>? When is it not enough to implement both in same class?</p>
  
  <p>Also, to understand purpose, I'd like to know where this concept comes from:</p>
  
  <ul>
  <li>It is originated in .Net</li>
  <li>There is concept of Identity/Principal as design pattern, which <code>System.Security.Principal</code> implemented in those interfaces</li>
  <li>It is originated somewhere else and supported for compatibility</li>
  </ul>
  
  <p>Therefore, does <code>UserPrincipal</code> from <code>System.DirectoryServices</code> act similarly to <code>IPrincipal</code> but not implement it by accident or by intention?</p>
  
  <p>P.S. I'm looking for reasoning behind idea, not benefits/controversies comparison, so please try not to start opinion-based discussion</p>