일부 saml 정보가 들어있는 xml 파일 인 saml.config가 있습니다. 이 정보는 개발 및 준비 URL 대신 제작 URL을 포함하도록 릴리스 빌드에서 변형되어야합니다. 내 개발 및 스테이징 환경에서 변형이 완벽하게 발생합니다. 릴리스 환경에서는 변형이 발생하지 않습니다.AppHarbor 사용자 지정 구성 파일 변환
저는 변환을 테스트하기 위해 http://webconfigtransformationtester.apphb.com/을 시험해 보았습니다. 그리고 그들은 적용되지 않았지만, VS는 그것들을 완벽하게 적용합니다.
기본 saml.config 파일 :
<?xml version="1.0"?>
<SAMLConfiguration xmlns="urn:componentspace:SAML:2.0:configuration">
<ServiceProvider Name="Portal.Web" AssertionConsumerServiceUrl="http://localhost:49462/SingleSignOn/ConsumeAssertion"/>
<PartnerIdentityProvider Name="MTMIdentity"
SignAuthnRequest="false"
WantResponseSigned="false"
WantAssertionSigned="false"
WantAssertionEncrypted="false"
SingleSignOnServiceUrl="https://identity.*********.com/SingleSignOn/"/>
</SAMLConfiguration>
변형 파일 :
<?xml version="1.0" encoding="utf-8" ?>
<SAMLConfiguration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xmlns="urn:componentspace:SAML:2.0:configuration">
<ServiceProvider Name="Portal.Web" AssertionConsumerServiceUrl="https://***********.com/SingleSignOn/ConsumeAssertion" xdt:Transform="SetAttributes" xdt:Locator="Match(Name)" />
</SAMLConfiguration>
*******와 서비스 제공 업체 AssertionConsumerServiceUrl에서 로컬 호스트 URL을 교체해야 결과 ****. com 버전이지만 그렇지 않습니다.
<?xml version="1.0"?>
<SAMLConfiguration xmlns="urn:componentspace:SAML:2.0:configuration">
<ServiceProvider Name="Portal.Web" AssertionConsumerServiceUrl="http://localhost:49462/SingleSignOn/ConsumeAssertion" />
<PartnerIdentityProvider Name="MTMIdentity" SignAuthnRequest="false" WantResponseSigned="false" WantAssertionSigned="false" WantAssertionEncrypted="false" SingleSignOnServiceUrl="https://identity.********.com/SingleSignOn/" />
</SAMLConfiguration>
변환 테스터가 적합하지 않은 이유는 무엇입니까? 변형?
편집 :
내가 로컬 및 우리의 스테이징 환경에서 변환을 처리 할 수 SlowCheetah 추가 기능/nuget 패키지를 사용하는 것이 추가해야합니다. 문서 (http://support.appharbor.com/kb/getting-started/managing-environments)를 고려
는
구성 파일 변환 대응 .release.config 파일 모두의 .config 파일에 지원되는 상태.
나는 AppHarbor가 SlowCheetah없이이 작업을 수행 할 수 있다고 가정합니다. 그러나 WebConfigTransformTester 도구는이 변환을 적용하지 않습니다.
그럼에도 불구하고 질문은 여전히 있습니다.이 변환을 어떻게 적용 할 수 있습니까? AppHarbor에서 SlowCheetah를 사용할 수 있습니까?
는편집 : 추가 조사시
, AppHarbor뿐만 아니라의 Web.config에 변환을 적용하지 않은 것 같습니다.
내 CONFIGS : 웹에서
appSettings는.구성 환경이
이 릴리스 변환 "개발"로 설정되어
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="aspnet:UseHostHeaderForRequestUrl" value="true" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="Environment" value="Development" />
</appSettings>
주의 : 환경으로 대체되고
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="Environment" value="Release" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<customErrors defaultRedirect="GenericError.htm" mode="Off" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
</system.web>
</configuration>
공지 사항
AppHarbor 환경을 "해제"
AppHarbor에 배포 한 후 빌드를 다운로드하고 Web.Config를 확인한 후 "개발"에서 환경 설정을 유지합니다.
편집 :
내가보기에 환경 AppSetting 출력을 읽어 내 컨트롤러 중 하나에 액션을 추가하고, 놀랍게도 많은는 "릴리스"이었다!
그래서 무엇을 제공합니까? "다운로드 빌드"컨텐트에는 변환이 없지만 요청이 발생하면 어떻게됩니까? AppHarbor은 언제 변형을 적용합니까? 빌드하는 대신 런타임에 실행합니까?
편집 :
가 AppHarbor들에서 다시 들었과 변환에 일어나는 실제 여전히 게시의 최종 출력되지 않습니다 빌드는 "게시 웹 사이트"폴더를이 순간에도 게시 행위. 의 xmlns는 설정 파일의 루트 노드의 속성 때문에
덕분에, 조