1

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() が失敗しました: サーバーはこの要求に対する応答を返しませんでした。

このような問題の原因は何ですか?

4

0 に答える 0