Files
ScheMe/packages/MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3/tools/VSToolsPath/Web/Microsoft.Web.Publishing/ImportAfter/Microsoft.Web.AzureAD.Publishing.targets
T

300 lines
20 KiB
XML

<!--
***********************************************************************************************
Microsoft.Web.AzureAD.Publishing.targets
WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
created a backup copy. Incorrect changes to this file will make it
impossible to load or build your web deploy projects from the command-line or the IDE.
Copyright (C) Microsoft Corporation. All rights reserved.
***********************************************************************************************
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--********************************************************************-->
<!-- This will create the parameters required when publishing an web app leveraging
Windows Azure Active Directory for auth -->
<PropertyGroup>
<PipelineTransformPhaseDependsOn>$(PipelineTransformPhaseDependsOn);_TransformWebConfigForAzureAuthentication</PipelineTransformPhaseDependsOn>
</PropertyGroup>
<Target Name="_TransformWebConfigForAzureAuthenticationCore">
<PropertyGroup>
<_WebConfigTransformFolderForAzureAuthentication>$(_WPPDefaultIntermediateOutputPath)WebConfigTransformFolderForAzureAuthentication</_WebConfigTransformFolderForAzureAuthentication>
</PropertyGroup>
<ItemGroup>
<_WebConfigsToTransformForAzureAuthentication Include="@(FilesForPackagingFromProject)"
Condition="'%(FilesForPackagingFromProject.Filename)%(FilesForPackagingFromProject.Extension)'=='$(ProjectConfigFileName)'
And !%(FilesForPackagingFromProject.Exclude)
And '%(DestinationRelativePath)' == '$(ProjectConfigFileName)'">
<TransformOriginalFolder>$(_WebConfigTransformFolderForAzureAuthentication)\original</TransformOriginalFolder>
<TransformFileFolder>$(_WebConfigTransformFolderForAzureAuthentication)\assist</TransformFileFolder>
<TransformOutputFile>$(_WebConfigTransformFolderForAzureAuthentication)\transformed\%(DestinationRelativePath)</TransformOutputFile>
<TransformScope>$([System.IO.Path]::GetFullPath($(WPPAllFilesInSingleFolder)\%(DestinationRelativePath)))</TransformScope>
</_WebConfigsToTransformForAzureAuthentication>
<_WebConfigsToTransformForAzureAuthenticationOuputFiles Include="@(_WebConfigsToTransformForAzureAuthentication->'%(TransformOutputFile)')">
</_WebConfigsToTransformForAzureAuthenticationOuputFiles>
</ItemGroup>
<PropertyGroup>
<_WebConfigsToTransformForAzureAuthenticationOuputDirectories>@(_WebConfigsToTransformForAzureAuthenticationOuputFiles->'%(RootDir)%(Directory)')</_WebConfigsToTransformForAzureAuthenticationOuputDirectories>
<_WebConfigsToTransformForAzureAuthenticationOuput>@(_WebConfigsToTransformForAzureAuthentication->'%(TransformOutputFile)');</_WebConfigsToTransformForAzureAuthenticationOuput>
</PropertyGroup>
<ItemGroup>
<_WebConfigsToTransformForAzureAuthenticationOuputDirectories Include="$(_WebConfigsToTransformForAzureAuthenticationOuputDirectories)" />
</ItemGroup>
<!-- Make sure required directories exist -->
<MakeDir Directories="@(_WebConfigsToTransformForAzureAuthenticationOuputDirectories)" Condition="!Exists(%(Identity))"/>
<!-- Copy the original web.config -->
<CopyPipelineFiles PipelineItems="@(_WebConfigsToTransformForAzureAuthentication)"
SourceDirectory="$(WebPublishPipelineProjectDirectory)"
TargetDirectory="%(TransformOriginalFolder)"
SkipMetadataExcludeTrueItems="True"
UpdateItemSpec="False"
DeleteItemsMarkAsExcludeTrue ="True"
Condition="'@(_WebConfigsToTransformForAzureAuthentication)' != ''">
<Output TaskParameter="UpdatedPipelineItems" ItemName="_UpdatedWebConfigsToTransformForAzureAuthentication"/>
</CopyPipelineFiles>
<!-- Delete those web.config have been updated if existed-->
<Delete Files="@(_WebConfigsToTransformForAzureAuthenticationOuputDirectories->'%(TransformOutputFile)')" />
<ItemGroup>
<MSDeployParameterValue Include="AD_APPIDUri">
<ParameterValue>$(ADAppIDUri)</ParameterValue>
</MSDeployParameterValue>
</ItemGroup>
<PropertyGroup>
<RemoveCertValidationElement Condition="'$(RemoveCertValidationElement)'=='' ">false</RemoveCertValidationElement>
<_RemoveCertificateValidationTransform Condition="'$(RemoveCertValidationElement)' == 'true'">&lt;certificateValidation certificateValidationMode=&quot;None&quot; xdt:Transform=&quot;Remove&quot; /&gt;</_RemoveCertificateValidationTransform>
<_RemoveExistingAudienceUrisTransform Condition="'$(PreserveExistingAudienceUris)' != 'true'">&lt;add xdt:Transform=&quot;RemoveAll&quot; /&gt;</_RemoveExistingAudienceUrisTransform>
</PropertyGroup>
<PropertyGroup>
<_ReplaceRealmAndAudienceUriAppSetting Condition="'$(ADWebAPIBased)'!='true' And '$(ADUsesOwinOrOpenIdConnect)'!='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:AudienceUri&quot;
value=&quot;{% parameter='AD_AudienceUriAppSetting' xpathlocator='key' description='AD Audience Uri App Setting' defaultValue='%24(value)' tags='AD_AudienceUriAppSetting' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;add key=&quot;ida:Realm&quot;
value=&quot;{% parameter='AD_RealmAppSetting' xpathlocator='key' description='AD Realm App Setting' defaultValue='%24(value)' tags='AD_RealmAppSetting' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;add key=&quot;ida:FederationMetadataLocation&quot;
value=&quot;{% parameter='AD_MetadataUrl' xpathlocator='key' description='AD MetadataUrl App Setting' defaultValue='%24(value)' tags='AD_MetadataUrlAppSetting' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceRealmAndAudienceUriAppSetting>
<_ReplaceADClientID Condition="'$(ADClientAPPID)'!='' And '$(ADUsesOwinOrOpenIdConnect)'!='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:ClientID&quot;
value=&quot;{% parameter='AD_ClientID' xpathlocator='key' description='AD Client Application ID' defaultValue='%24(value)' tags='AD_ClientAPPID' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADClientID>
<_ReplaceADClientPassword Condition="'$(ADClientPassword)'!='' And '$(ADUsesOwinOrOpenIdConnect)'!='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:Password&quot;
value=&quot;{% parameter='AD_ClientPassword' xpathlocator='key' description='AD Client Password' defaultValue='%24(value)' tags='AD_Password' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADClientPassword>
<_ReplaceADWebAPIAudienceAppSetting Condition="'$(ADWebAPIBased)'=='true' And '$(ADUsesOwinOrOpenIdConnect)'!='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:Audience&quot;
value=&quot;{% parameter='AD_WebAPI_Audience' xpathlocator='key' description='AD Web API Audience' defaultValue='%24(value)' tags='AD_WebAPI_Audience' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADWebAPIAudienceAppSetting>
<_ReplaceADWIFArtifacts Condition="'$(ADWebAPIBased)'!='true' And '$(ADUsesOwinOrOpenIdConnect)'!='true'">
&lt;system.identityModel&gt;
&lt;identityConfiguration&gt;
$(_RemoveCertificateValidationTransform)
&lt;audienceUris&gt;
$(_RemoveExistingAudienceUrisTransform)
&lt;add
value=&quot;APPIDUri&quot;
xdt:Transform=&quot;Insert&quot; xdt:SupressWarnings=&quot;True&quot; /&gt;
&lt;/audienceUris&gt;
&lt;audienceUris&gt;
&lt;add
value=&quot;{% token='%24(value)' parameter='AD_%24(value)' xpathlocator='value' description='AD AppIDUri' defaultValue='%24(value)' tags='ADrealmUri' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; /&gt;
&lt;/audienceUris&gt;
&lt;/identityConfiguration&gt;
&lt;/system.identityModel&gt;
&lt;system.identityModel.services&gt;
&lt;federationConfiguration&gt;
&lt;wsFederation
realm=&quot;{% xpathlocator='requireHttps' parameter='AD_APPIDUri' description='AD AppIDUri' defaultValue='%24(realm)' tags='ADAPPIDUri' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(realm)&quot; xdt:SupressWarnings=&quot;True&quot; /&gt;
&lt;wsFederation
issuer=&quot;{% xpathlocator='requireHttps' parameter='AD_Issuer' description='AD Issuer' defaultValue='%24(issuer)' tags='ADISSUER' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(issuer)&quot; xdt:SupressWarnings=&quot;True&quot; /&gt;
&lt;/federationConfiguration&gt;
&lt;/system.identityModel.services&gt;
</_ReplaceADWIFArtifacts>
<_ReplaceADClientIDDev14 Condition="'$(ADClientAPPID)'!='' And '$(ADUsesOwinOrOpenIdConnect)'=='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:ClientId&quot;
value=&quot;{% parameter='AD_ClientID' xpathlocator='key' description='AD Client Application ID' defaultValue='%24(value)' tags='AD_ClientAPPID' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADClientIDDev14>
<_ReplaceADClientPasswordDev14 Condition="'$(ADClientPassword)'!='' And '$(ADUsesOwinOrOpenIdConnect)'=='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:ClientSecret&quot;
value=&quot;{% parameter='AD_ClientPassword' xpathlocator='key' description='AD Client Password' defaultValue='%24(value)' tags='AD_Password' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADClientPasswordDev14>
<_ReplaceADTenantIdDev14 Condition="'$(ADTenantId)'!='' And '$(ADUsesOwinOrOpenIdConnect)'=='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:TenantId&quot;
value=&quot;{% parameter='AD_TenantId' xpathlocator='key' description='AD Tenant Id' defaultValue='%24(value)' tags='AD_TenantId' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADTenantIdDev14>
<_ReplaceADDomainDev14 Condition="'$(ADDomain)'!='' And '$(ADUsesOwinOrOpenIdConnect)'=='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:Domain&quot;
value=&quot;{% parameter='AD_Domain' xpathlocator='key' description='AD Domain' defaultValue='%24(value)' tags='AD_Domain' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADDomainDev14>
<_ReplaceADPostLogoutRedirectUriDev14 Condition="'$(ADPostLogoutRedirectUri)'!='' And '$(ADUsesOwinOrOpenIdConnect)'=='true'">
&lt;appSettings&gt;
&lt;add key=&quot;ida:PostLogoutRedirectUri&quot;
value=&quot;{% parameter='AD_PostLogoutRedirectUri' xpathlocator='key' description='AD PostLogoutRedirectUri' defaultValue='%24(value)' tags='AD_PostLogoutRedirectUri' %}&quot;
xdt:Transform=&quot;SetTokenizedAttributes(value)&quot; xdt:SupressWarnings=&quot;True&quot; xdt:Locator=&quot;Match(key)&quot;/&gt;
&lt;/appSettings&gt;
</_ReplaceADPostLogoutRedirectUriDev14>
</PropertyGroup>
<ItemGroup>
<MSDeployParameterValue Include="AD_ClientID" Condition="'$(ADClientAPPID)'!=''">
<ParameterValue>$(ADClientAPPID)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_Issuer" Condition="'$(ADIssuer)'!=''">
<ParameterValue>$(ADIssuer)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_MetadataUrl" Condition="'$(ADDomain)'!=''">
<ParameterValue>https://login.windows.net/$(ADDomain)/FederationMetadata/2007-06/FederationMetadata.xml</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_ClientPassword" Condition="'$(ADClientPassword)'!=''">
<ParameterValue>$(ADClientPassword)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_WebAPI_Audience" Condition="'$(ADWebAPIBased)'=='true'">
<ParameterValue>$(ADAppIDUri)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_RealmAppSetting" Condition="'$(ADWebAPIBased)'!='true'">
<ParameterValue>$(ADAppIDUri)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_AudienceUriAppSetting" Condition="'$(ADWebAPIBased)'!='true'">
<ParameterValue>$(ADAppIDUri)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_TenantId" Condition="'$(ADTenantId)'!=''">
<ParameterValue>$(ADTenantId)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_Domain" Condition="'$(ADDomain)'!=''">
<ParameterValue>$(ADDomain)</ParameterValue>
</MSDeployParameterValue>
<MSDeployParameterValue Include="AD_PostLogoutRedirectUri" Condition="'$(ADPostLogoutRedirectUri)'!=''">
<ParameterValue>$(ADPostLogoutRedirectUri)</ParameterValue>
</MSDeployParameterValue>
</ItemGroup>
<CreateProperty Value="&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;configuration xmlns:xdt=&quot;http://schemas.microsoft.com/XML-Document-Transform&quot;&gt;
$(_ReplaceRealmAndAudienceUriAppSetting)
$(_ReplaceADClientID)
$(_ReplaceADClientPassword)
$(_ReplaceADWebAPIAudienceAppSetting)
$(_ReplaceADWIFArtifacts)
$(_ReplaceADClientIDDev14)
$(_ReplaceADClientPasswordDev14)
$(_ReplaceADTenantIdDev14)
$(_ReplaceADDomainDev14)
$(_ReplaceADPostLogoutRedirectUriDev14)
&lt;/configuration&gt;">
<Output TaskParameter="Value" PropertyName="_WebConfigsTransformForAzureAuthentication"/>
</CreateProperty>
<PropertyGroup>
<_WebConfigsToTransformForAzureAuthentication_Identity>%(_WebConfigsToTransformForAzureAuthentication.Identity)</_WebConfigsToTransformForAzureAuthentication_Identity>
<_WebConfigsToTransformForAzureAuthentication_TransformOutputFile>%(_WebConfigsToTransformForAzureAuthentication.TransformOutputFile)</_WebConfigsToTransformForAzureAuthentication_TransformOutputFile>
<_WebConfigsToTransformForAzureAuthentication_TransformScope>%(_WebConfigsToTransformForAzureAuthentication.TransformScope)</_WebConfigsToTransformForAzureAuthentication_TransformScope>
</PropertyGroup>
<ParameterizeTransformXml
Source="$(_WebConfigsToTransformForAzureAuthentication_Identity)"
IsSourceAFile="True"
Transform="$(_WebConfigsTransformForAzureAuthentication)"
IsTransformAFile="False"
Destination="$(_WebConfigsToTransformForAzureAuthentication_TransformOutputFile)"
IsDestinationAFile="True"
Scope="$(_WebConfigsToTransformForAzureAuthentication_TransformScope)"
StackTrace="$(TransformWebConfigStackTraceEnabled)"
EnableTokenizeParameters="True"
SourceRootPath="$(WebPublishPipelineSourceRootDirectory)">
<Output TaskParameter="DeclareParameters" ItemName="_ParamsFromWebConfigsToTransformForAzureAuthentication"/>
</ParameterizeTransformXml>
<PropertyGroup>
<_WebConfigsToTransformForAzureAuthenticationOutputFolder>$(_WPPDefaultIntermediateOutputPath)AzureAuthentication</_WebConfigsToTransformForAzureAuthenticationOutputFolder>
<_WebConfigsToTransformForAzureAuthenticationOutputParametersFile>$(_WebConfigsToTransformForAzureAuthenticationOutputFolder)\TransformForAzureAuthentication.parameters.xml</_WebConfigsToTransformForAzureAuthenticationOutputParametersFile>
</PropertyGroup>
<MakeDir Directories="$(_WebConfigsToTransformForAzureAuthenticationOutputFolder)" Condition="!Exists($(_WebConfigsToTransformForAzureAuthenticationOutputFolder))"/>
<ExportParametersFile
Parameters="@(_ParamsFromWebConfigsToTransformForAzureAuthentication)"
DeclareParameterFile="$(_WebConfigsToTransformForAzureAuthenticationOutputParametersFile)"
GenerateFileEvenIfEmpty="True"
/>
<ImportParametersFile Files="$(_WebConfigsToTransformForAzureAuthenticationOutputParametersFile)"
DisableEscapeMSBuildVariable="$(ImportParametersFile_DisableEscapeMSBuildVariable)"
Condition="!$(DisableAllVSGeneratedMSDeployParameter) And Exists($(_WebConfigsToTransformForAzureAuthenticationOutputParametersFile))" >
<Output TaskParameter="Result" ItemName="_ImportAutoParameterizeAzureAuthenticationWebConfig"/>
</ImportParametersFile>
<ItemGroup>
<MsDeployDeclareParameters Include="@(_ImportAutoParameterizeAzureAuthenticationWebConfig)" Condition="'%(_ImportAutoParameterizeAzureAuthenticationWebConfig.Identity)' !=''">
<Value>%(_ImportAutoParameterizeAzureAuthenticationWebConfig.DefaultValue)</Value>
<Priority>$(VsWebConfigAutoCsParametersPriority)</Priority>
</MsDeployDeclareParameters>
</ItemGroup>
</Target>
<!--********************************************************************-->
<!-- Commit parameterized web.config into pipeline so later phase will pick up-->
<!--********************************************************************-->
<Target Name="_PostTransformWebConfigForAzureAuthentication">
<ItemGroup>
<!--Remove untransformed Web.configs from the pipeline-->
<FilesForPackagingFromProject Remove="@(_WebConfigsToTransformForAzureAuthentication)" Condition="'@(_WebConfigsToTransformForAzureAuthentication)'!='' And !%(_WebConfigsToTransformForAzureAuthentication.Exclude) And Exists(%(_WebConfigsToTransformForAzureAuthentication.TransformOutputFile))"/>
<!--Add the transformed Web.configs at the new loction to the pipeline-->
<FilesForPackagingFromProject Include="@(_WebConfigsToTransformForAzureAuthentication->'%(TransformOutputFile)')" Condition="'@(_WebConfigsToTransformForAzureAuthentication)'!='' And !%(_WebConfigsToTransformForAzureAuthentication.Exclude) And Exists(%(_WebConfigsToTransformForAzureAuthentication.TransformOutputFile))"/>
</ItemGroup>
</Target>
<PropertyGroup>
<_TransformWebConfigForAzureAuthenticationDependsOn>
_TransformWebConfigForAzureAuthenticationCore;
_PostTransformWebConfigForAzureAuthentication;
</_TransformWebConfigForAzureAuthenticationDependsOn>
</PropertyGroup>
<!--********************************************************************-->
<!-- Entry point of parameterizing web.config containing Win Azure Active Directory (WAAD) related artifacts -->
<!--********************************************************************-->
<Target Name="_TransformWebConfigForAzureAuthentication"
DependsOnTargets="$(_TransformWebConfigForAzureAuthenticationDependsOn)"
Condition="('$(WebPublishMethod)' =='MsDeploy' or '$(WebPublishMethod)' =='Package') and '$(EnableADPublish)' =='true'">
</Target>
</Project>