Silverlight アプリ用に WS-Trust プロトコルを使用してクレームを受信するサービスを備えた Web アプリを作成しました。クレームが GetOutputClaimsIdentity() メソッドで作成されていることがわかります (2 回呼び出されます-なぜですか?) が、Silverligh レベルでは「見つかりません」というメッセージが表示されます (ストリームが空ですか?)。
Silverlight による WS-Trust のサポートは、最新の WIF トレーニング キットから取得しました。サーバー側でコードをデバッグしようとしていましたが、残念ながら WIF ソース コードは .NET Framework デバッグの一部としてまだ利用できません :(
したがって、クライアントアプリへのクレームで応答を適切に返さない理由がわかりません。
WS-Trust プロジェクトの Web.config ファイルの内容は次のとおりです (現在、自己署名証明書を使用しています)。
<?xml version="1.0"?>
<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="PatientInfo"/>
<add key="SigningCertificateName" value="CN=PatientInfo"/>
<!--<add key="EncryptingCertificateName" value="CN=DefaultApplicationCertificate"/>-->
<add key="EncryptingCertificateName" value=""/>
</appSettings>
<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"/>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment
aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<ws2007HttpBinding>
<binding name="ws2007HttpBindingConfiguration">
<security mode="TransportWithMessageCredential">
<message establishSecurityContext="false" clientCredentialType="UserName" />
</security>
</binding>
</ws2007HttpBinding>
</bindings>
<services>
<service name="Microsoft.IdentityModel.Protocols.WSTrust.WSTrustServiceContract" behaviorConfiguration="ServiceBehavior">
<endpoint address="IWSTrust13"
binding="ws2007HttpBinding"
bindingConfiguration="ws2007HttpBindingConfiguration"
contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract"/>
<host>
<baseAddresses>
<add baseAddress="https://WIN-8LUMNJ5E6S4/PatientHistInfo.WS-Trust/InternalAuthentication.svc" />
</baseAddresses>
</host>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</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="eSoft.Server.Security.CustomUserNamePasswordTokenHandler, PatientHistInfo.WS-Trust"/>
</securityTokenHandlers>
</service>
</microsoft.identityModel>
<system.diagnostics>
<sources>
<source name="Microsoft.IdentityModel" switchValue="Verbose">
<listeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="WIFTrace.txt" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
</configuration>
フィドラーの結果は次のとおりです。
HTTP/1.1 504 Fiddler - Receive Failure Content-Type: text/html Connection: close Timestamp: 15:41:21.666
ReadResponse() が失敗しました: サーバーはこの要求に対する応答を返しませんでした。
このような問題の原因は何ですか?