Skip to content

Commit

Permalink
Claims resolver and fix to the date readme file
Browse files Browse the repository at this point in the history
  • Loading branch information
yoelhor committed Feb 10, 2022
1 parent f9ae1bd commit 859147c
Show file tree
Hide file tree
Showing 10 changed files with 695 additions and 380 deletions.
120 changes: 120 additions & 0 deletions claims-resolver/CR_Context.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0"
TenantId="yourtenant.onmicrosoft.com"
PolicyId="B2C_1A_CR_Context"
PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_CR_Context">

<BasePolicy>
<TenantId>yourtenant.onmicrosoft.com</TenantId>
<PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
</BasePolicy>

<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="ContextBuildNumber">
<DisplayName>{Context:BuildNumber}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="ContextCorrelationId">
<DisplayName>{Context:CorrelationId}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="ContextDateTimeInUtc">
<DisplayName>{Context:DateTimeInUtc}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="ContextDeploymentMode">
<DisplayName>{Context:DeploymentMode}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="ContextIPAddress">
<DisplayName>{Context:IPAddress}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="ContextKMSI">
<DisplayName>{Context:KMSI}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="ContextHostName">
<DisplayName>{Context:HostName}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
</ClaimsSchema>
</BuildingBlocks>

<ClaimsProviders>
<ClaimsProvider>
<DisplayName>Unit tests</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="ExperimentalTechnicalProfile">
<DisplayName>Unit test</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="ContextBuildNumber" AlwaysUseDefaultValue="true" DefaultValue="{Context:BuildNumber}" />
<InputClaim ClaimTypeReferenceId="ContextCorrelationId" AlwaysUseDefaultValue="true" DefaultValue="{Context:CorrelationId}" />
<InputClaim ClaimTypeReferenceId="ContextDateTimeInUtc" AlwaysUseDefaultValue="true" DefaultValue="{Context:DateTimeInUtc}" />
<InputClaim ClaimTypeReferenceId="ContextDeploymentMode" AlwaysUseDefaultValue="true" DefaultValue="{Context:DeploymentMode}" />
<InputClaim ClaimTypeReferenceId="ContextIPAddress" AlwaysUseDefaultValue="true" DefaultValue="{Context:IPAddress}" />
<InputClaim ClaimTypeReferenceId="ContextHostName" AlwaysUseDefaultValue="true" DefaultValue="{Context:HostName}" />
<InputClaim ClaimTypeReferenceId="ContextKMSI" AlwaysUseDefaultValue="true" DefaultValue="{CONTEXT:KMSI}" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="ContextBuildNumber" />
<OutputClaim ClaimTypeReferenceId="ContextCorrelationId" />
<OutputClaim ClaimTypeReferenceId="ContextDateTimeInUtc" />
<OutputClaim ClaimTypeReferenceId="ContextDeploymentMode" />
<OutputClaim ClaimTypeReferenceId="ContextIPAddress" />
<OutputClaim ClaimTypeReferenceId="ContextHostName" />
<OutputClaim ClaimTypeReferenceId="ContextKMSI" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>

<UserJourneys>
<UserJourney Id="UnitTestJourney">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="ExperimentalTechnicalProfile" TechnicalProfileReferenceId="ExperimentalTechnicalProfile" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>

<RelyingParty>
<DefaultUserJourney ReferenceId="UnitTestJourney" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="1234" />

<!-- Unit test claims-->
<OutputClaim ClaimTypeReferenceId="ContextBuildNumber" />
<OutputClaim ClaimTypeReferenceId="ContextCorrelationId" />
<OutputClaim ClaimTypeReferenceId="ContextDateTimeInUtc" />
<OutputClaim ClaimTypeReferenceId="ContextDeploymentMode" />
<OutputClaim ClaimTypeReferenceId="ContextIPAddress" />
<OutputClaim ClaimTypeReferenceId="ContextHostName" />
<OutputClaim ClaimTypeReferenceId="ContextKMSI" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
96 changes: 96 additions & 0 deletions claims-resolver/CR_Culture.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0"
TenantId="yourtenant.onmicrosoft.com"
PolicyId="B2C_1A_CR_Culture"
PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_CR_Culture">

<BasePolicy>
<TenantId>yourtenant.onmicrosoft.com</TenantId>
<PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
</BasePolicy>

<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="CultureLanguageName">
<DisplayName>{Culture:LanguageName}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="CultureLCID">
<DisplayName>{Culture:LCID}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="CultureRegionName">
<DisplayName>{Culture:RegionName}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="CultureRFC5646">
<DisplayName>{Culture:RFC5646}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
</ClaimsSchema>
</BuildingBlocks>

<ClaimsProviders>
<ClaimsProvider>
<DisplayName>Unit tests</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="ExperimentalTechnicalProfile">
<DisplayName>Unit test</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="CultureLanguageName" AlwaysUseDefaultValue="true" DefaultValue="{Culture:LanguageName}" />
<InputClaim ClaimTypeReferenceId="CultureLCID" AlwaysUseDefaultValue="true" DefaultValue="{Culture:LCID}" />
<InputClaim ClaimTypeReferenceId="CultureRegionName" AlwaysUseDefaultValue="true" DefaultValue="{Culture:RegionName}" />
<InputClaim ClaimTypeReferenceId="CultureRFC5646" AlwaysUseDefaultValue="true" DefaultValue="{Culture:RFC5646}" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="CultureLanguageName" />
<OutputClaim ClaimTypeReferenceId="CultureLCID" />
<OutputClaim ClaimTypeReferenceId="CultureRegionName" />
<OutputClaim ClaimTypeReferenceId="CultureRFC5646" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>

<UserJourneys>
<UserJourney Id="UnitTestJourney">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="ExperimentalTechnicalProfile" TechnicalProfileReferenceId="ExperimentalTechnicalProfile" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>

<RelyingParty>
<DefaultUserJourney ReferenceId="UnitTestJourney" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="1234" />

<!-- Unit test claims-->
<OutputClaim ClaimTypeReferenceId="CultureLanguageName" />
<OutputClaim ClaimTypeReferenceId="CultureLCID" />
<OutputClaim ClaimTypeReferenceId="CultureRegionName" />
<OutputClaim ClaimTypeReferenceId="CultureRFC5646" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
152 changes: 152 additions & 0 deletions claims-resolver/CR_OIDC.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TrustFrameworkPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06" PolicySchemaVersion="0.3.0.0"
TenantId="yourtenant.onmicrosoft.com"
PolicyId="B2C_1A_CR_OIDC"
PublicPolicyUri="http://yourtenant.onmicrosoft.com/B2C_1A_CR_OIDC">

<BasePolicy>
<TenantId>yourtenant.onmicrosoft.com</TenantId>
<PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
</BasePolicy>

<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="OIDCAuthenticationContextReferences">
<DisplayName>{OIDC:AuthenticationContextReferences}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCClientId">
<DisplayName>{OIDC:ClientId}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCDomainHint">
<DisplayName>{OIDC:DomainHint}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCLoginHint">
<DisplayName>{OIDC:LoginHint}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCMaxAge">
<DisplayName>{OIDC:MaxAge}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCNonce">
<DisplayName>{OIDC:Nonce}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCPrompt">
<DisplayName>{OIDC:Prompt}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCResource">
<DisplayName>{OIDC:Resource}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCscope">
<DisplayName>{OIDC:scope}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OIDCstate">
<DisplayName>{OIDC:state}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
<ClaimType Id="OidcRedirectUri">
<DisplayName>{OIDC:RedirectUri}</DisplayName>
<DataType>string</DataType>
<UserInputType>Readonly</UserInputType>
</ClaimType>
</ClaimsSchema>
</BuildingBlocks>

<ClaimsProviders>
<ClaimsProvider>
<DisplayName>Unit tests</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="ExperimentalTechnicalProfile">
<DisplayName>Unit test</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
<Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="OIDCAuthenticationContextReferences" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:AuthenticationContextReferences}" />
<InputClaim ClaimTypeReferenceId="OIDCClientId" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:ClientId}" />
<InputClaim ClaimTypeReferenceId="OIDCDomainHint" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:DomainHint}" />
<InputClaim ClaimTypeReferenceId="OIDCLoginHint" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:LoginHint}" />
<InputClaim ClaimTypeReferenceId="OIDCMaxAge" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:MaxAge}" />
<InputClaim ClaimTypeReferenceId="OIDCNonce" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:Nonce}" />
<InputClaim ClaimTypeReferenceId="OIDCPrompt" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:Prompt}" />
<InputClaim ClaimTypeReferenceId="OIDCResource" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:Resource}" />
<InputClaim ClaimTypeReferenceId="OIDCscope" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:scope}" />
<!-- <InputClaim ClaimTypeReferenceId="OIDCstate" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:state}" /> -->
<InputClaim ClaimTypeReferenceId="OidcRedirectUri" AlwaysUseDefaultValue="true" DefaultValue="{OIDC:RedirectUri}" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="OIDCAuthenticationContextReferences" />
<OutputClaim ClaimTypeReferenceId="OIDCClientId" />
<OutputClaim ClaimTypeReferenceId="OIDCDomainHint" />
<OutputClaim ClaimTypeReferenceId="OIDCLoginHint" />
<OutputClaim ClaimTypeReferenceId="OIDCMaxAge" />
<OutputClaim ClaimTypeReferenceId="OIDCNonce" />
<OutputClaim ClaimTypeReferenceId="OIDCPrompt" />
<OutputClaim ClaimTypeReferenceId="OIDCResource" />
<OutputClaim ClaimTypeReferenceId="OIDCscope" />
<!-- <OutputClaim ClaimTypeReferenceId="OIDCstate" /> -->
<OutputClaim ClaimTypeReferenceId="OidcRedirectUri" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>

<UserJourneys>
<UserJourney Id="UnitTestJourney">
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="ExperimentalTechnicalProfile" TechnicalProfileReferenceId="ExperimentalTechnicalProfile" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
</UserJourneys>

<RelyingParty>
<DefaultUserJourney ReferenceId="UnitTestJourney" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub" DefaultValue="1234" />

<!-- Unit test claims-->
<OutputClaim ClaimTypeReferenceId="OIDCAuthenticationContextReferences" />
<OutputClaim ClaimTypeReferenceId="OIDCClientId" />
<OutputClaim ClaimTypeReferenceId="OIDCDomainHint" />
<OutputClaim ClaimTypeReferenceId="OIDCLoginHint" />
<OutputClaim ClaimTypeReferenceId="OIDCMaxAge" />
<OutputClaim ClaimTypeReferenceId="OIDCNonce" />
<OutputClaim ClaimTypeReferenceId="OIDCPrompt" />
<OutputClaim ClaimTypeReferenceId="OIDCResource" />
<OutputClaim ClaimTypeReferenceId="OIDCscope" />
<!-- <OutputClaim ClaimTypeReferenceId="OIDCstate" /> -->
<OutputClaim ClaimTypeReferenceId="OidcRedirectUri" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
</TrustFrameworkPolicy>
Loading

0 comments on commit 859147c

Please sign in to comment.