saml情報を含むxmlファイルsaml.configがあります。この情報は、リリース ビルドで変換して、開発およびステージング URL の代わりに運用 URL を含める必要があります。私の開発環境とステージング環境では、変換は完全に行われますが、リリース環境では変換は行われません。
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 の localhost 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 にも適用していないようです。
私の設定:
Web.Config の 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 を確認しましたが、「開発」の環境設定がまだ残っています。
編集:
Environment AppSetting を読み取ってビューに出力するコントローラーの 1 つにアクションを追加しましたが、驚いたことにそれは「リリース」でした!!!
それで、何が得られますか?「Download Build」コンテンツには変換が行われていませんが、リクエストが発生すると変換されますか? AppHarbor はいつ変換を適用しますか? ビルド時ではなく実行時ですか?
編集:
AppHarbor 関係者からの回答によると、変換は実際の発行時に行われるため、ビルドに「発行済み Web サイト」フォルダーがあっても、それは発行アクションの最終出力ではありません。
ありがとう、ジョー