3.1.1.11.2.4 GetConstructedClaims

 procedure GetConstructedClaims (
     pADPrincipal : ADDRESS OF DSNAME,
     principalClass : ObjectClass,
     pConstructedClaims : ADDRESS OF CLAIMS_ARRAY)

This procedure is a helper routine that computes constructed claims (section 3.1.1.11.1.3) for a given principal from Active Directory by using the Claims Dictionary (section 3.1.1.11.1.2).

pADPrincipal: The principal whose Active Directory claims are to be retrieved.

principalClass: The object class of the principal.

pConstructedClaims: The address of a CLAIMS_ARRAY (section 2.2.18.6) structure that is used for the output constructed claims.

Return Values: This procedure does not return a value.

Logical Processing:

 bIssueClaim : boolean;
 claim: CLAIM_ENTRY;
 claimConfigContainer : DSName;
  
 bIssueClaim := FALSE;
 claim := null;
 pConstructedClaims^ := null;
  
 claimConfigContainer := DescendantObject( ConfigNC(),
     "CN=Claim Types, CN=Claims Configuration, CN=Services");
  
 /*
   Constructed claims use the CLAIMS_SOURCE_TYPE_AD source type.
 */
 pConstructedClaims^.usClaimsSourceType := CLAIMS_SOURCE_TYPE_AD;
 for (each x in children claimConfigContainer)
     if (x!msDS-ClaimSourceType = "Constructed" &&
        x!msDS-ClaimTypeAppliesToClass in principalClass &&
        ValidateClaimDefinition(x))
          bIssueClaim := TRUE;
     endif
  
     if (bIssueClaim)
         /*
           Currently only the AuthenticationSilo claim is supported
         */
         if (x.Name = "ad://ext/AuthenticationSilo")
             claim := GetAuthSiloClaim(pADPrincipal)
             if (claim != null)
                 pConstructedClaims^.ClaimEntries.Add(claim);
                 pConstructedClaims^.ulClaimsCount :=
                     pConstructedClaims^.ulClaimsCount + 1;
              endif           
         endif        
     endif
 endfor
  
 return;