WCFセキュリティトークンサービスWebサイトテンプレートを使用してダミーのセキュリティトークンサービスを作成しようとしています。 Webサイトを作成するときに、ファイルシステムURIを指定してASP.NET開発Webサーバーでサイトをホストすると、すべてが正常であるように見えます。ただし、STSにSSLを使用させたいと思っています。また、ASP.NET開発Webサーバーによって割り当てられた動的ポートを使用する際に発生するクロスドメイン問題も回避したいと考えています。そこで私は同じWebサイトを再作成しましたが、ファイルシステムURIの代わりにIIS 7.5の事前設定済みWebアプリケーション(たとえばhttps://localhost/SecurityTokenService/)にHTTPS URIを指定しました。これで、Service.svcファイルに移動しようとすると、強制的に接続がリセットされます。IIS 7.5でホストされているWCFサービスに接続するときに接続がリセットされる
以下は、私のweb.configファイルですが、ASP.NET開発Webサーバーでホストされている場合に動作するという事実は、IIS設定で問題が発生していると思います。何が起こっているのか把握しようとするかもしれないことは何ですか?
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
<section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<appSettings>
<add key="IssuerName" value="ActiveSTS"/>
<add key="SigningCertificateName" value="CN=STSTestCert"/>
<add key="EncryptingCertificateName" value=""/>
</appSettings>
<connectionStrings />
<location path="FederationMetadata">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<authentication mode="None"/>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</controls>
</pages>
</system.web>
<system.web.extensions>
<scripting>
<webServices>
</webServices>
</scripting>
</system.web.extensions>
<system.serviceModel>
<services>
<service name="Microsoft.IdentityModel.Protocols.WSTrust.WSTrustServiceContract" behaviorConfiguration="ServiceBehavior">
<endpoint address="https://localhost/SecurityTokenService/Service.svc/IWSTrust13" binding="ws2007HttpBinding" contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract" bindingConfiguration="ws2007HttpBindingConfiguration"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost/SecurityTokenService/Service.svc" />
</baseAddresses>
</host>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<ws2007HttpBinding>
<binding name="ws2007HttpBindingConfiguration">
<security mode="TransportWithMessageCredential">
<message establishSecurityContext="false" clientCredentialType="UserName" />
</security>
</binding>
</ws2007HttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<microsoft.identityModel>
<service>
<securityTokenHandlers>
<remove type="Microsoft.IdentityModel.Tokens.WindowsUserNameSecurityTokenHandler, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add type="CustomUserNamePasswordTokenHandler, App_Code"/>
</securityTokenHandlers>
</service>
</microsoft.identityModel>
</configuration>
更新:ウェブアプリケーション内の他のファイルに移動できます。 * .svcファイルではありません。私は101 statucコードを除いて動作するものはありませんので、これはちょっとイライラしています。
UPDATE:この問題は、STSでIISでホストされているWCFサービスにのみ存在することを示しています。 IISで通常のWCFサービスをホストしても問題はありません。カスタムSTSを含むさまざまなサンプルプロジェクトをダウンロードしましたが、すべて同じ動作を示します。これは、STSでうまくプレイできないIISの構成に何か問題があると考えています。問題が何であるか把握する方法を教えてください...
私はweb.configファイルとWindows Identity Training Kitのファイルを比較しましたが、大きな違いは見られません。ちょうど笑顔のために、私はあなたの推薦された変更を試みました、そして、私はまだ同じ行動を得ます。しかし、あなたの提案をありがとう。 –