0

IIS 7でホストされているAuthenticationService WCFを使用して 、 Windows phone 7からのユーザー ログを認証しようとしています。

SSLなしで試してみましたが、正常に動作しています。しかし、私はそれをhttpsに変換したい。

WP7エミュレーターからこのWCFへの呼び出しをヒットしたときに発生するエラーは次のとおりです。

"EndpointNotFoundException"

ただし、私の web.config には次の詳細があります。

<system.serviceModel>
   <services>
     <service name="System.Web.ApplicationServices.AuthenticationService" 
    behaviorConfiguration="AuthenticationServiceTypeBehaviors">
       <endpoint contract="System.Web.ApplicationServices.AuthenticationService"  
         binding="basicHttpBinding"
         bindingConfiguration="userHttps" address="https://localhost:700/AuthenticationService.svc"
         bindingNamespace="http://asp.net/ApplicationServices/v200"/>
       <endpoint address="mex" 
      binding="mexHttpsBinding"
      contract="IMetadataExchange" /> 
     </service>

   </services>
   <bindings>
     <basicHttpBinding>
       <binding name="userHttps">
         <security mode="Transport">
           <transport clientCredentialType="None" />
         </security>
       </binding>
     </basicHttpBinding>
   </bindings>
   <behaviors>
     <serviceBehaviors>
       <behavior name="AuthenticationServiceTypeBehaviors" >
         <serviceMetadata httpsGetEnabled="true" />
         <serviceDebug includeExceptionDetailInFaults="true"  />
       </behavior>

     </serviceBehaviors>

   </behaviors>
   <serviceHostingEnvironment
     aspNetCompatibilityEnabled="true"/>
 </system.serviceModel>

使用: AspNetSqlMembershipProvider と私はポイントを作るためにこれらの詳細を避けています。

私のIIS 7では、アプリケーションプールを作成し、自己署名証明書をホストされたWCFに関連付け、SSL設定オプションで「SSLが必要 - 選択済み」および「クライアント証明書を無視 - チェック済み」に関連付けました。

閲覧できますhttps://localhost:700/AuthenticationService.svc.

これを電話でサービス参照として追加できましたが、ログイン メソッドを呼び出すとエラーが表示されます。

エンドポイント アドレスを指定しましたが、それでもエラーが表示されます。

これをデバッグして詳細を取得する方法や、「SSL 経由で認証サービス WCF を使用する」を解決するための指針を誰かに説明してもらえますか?

編集1ブラウザからサービスにアクセスしようとしたときに、IPアドレスとsvc URLを使用してみました

svcutil.exe https://mcname.domain.local:700/AuthenticationService.svc?wsdl 

EDIT 2ウイルス対策とファイアウォールを無効にしようとしましたが、まだうまくいきません。

4

1 に答える 1

0

@Rajesh のコメントに従って、証明書を電話にインストールしたところ、機能し始めました。

.CER、.PFX、および.P7B形式をエクスポートするすべてのオプションを試しましたが、P7B形式のみが機能して電話にインストールできました。

SSLでAuthenticationService WCFを有効にするためのweb.configファイルの部分は

        <services>
          <service behaviorConfiguration="AppServiceBehaviors" name="System.Web.ApplicationServices.AuthenticationService">
            <endpoint binding="basicHttpBinding" bindingConfiguration="defaultBasicHttpBinding"
              bindingNamespace="http://asp.net/ApplicationServices/v200" contract="System.Web.ApplicationServices.AuthenticationService" />
          </service>

        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="AppServiceBehaviors">
              <serviceMetadata httpsGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
            <behavior name="">
              <serviceMetadata httpsGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
          multipleSiteBindingsEnabled="true" />
      </system.serviceModel>

      <system.web.extensions>
        <scripting>
          <webServices>
            <authenticationService enabled="true" requireSSL="true"/>

動作させるための手順: http://blogs.msdn.com/b/davidhardin/archive/2010/12/30/wp7-and-self-signed-ssl-certificates.aspx

  • ホスト名は、DNS、WINS、hosts ファイルなどを介して http エージェントによって解決可能である必要があります。
  • SSL 証明書は、ホスト名と一致する名前で認識されている必要があります。

  • 信頼されたルート証明書は、httpエージェントと共に、つまり電話機にインストールする必要があります。

証明書を WP7 エミュレーターの電話にインストールするのが最も難しい部分でした。前述のように、P7B ファイルは IIS でホストされ、URL はエミュレーター ブラウザー経由でアクセスされ、電話に証明書をインストールするのに役立ちました (申し訳ありません! 参照リンクを忘れてしまいました)。

インストール後、エンドポイントの問題はなくなり、動作し始めました。これは恒久的な解決策ではないため (エミュレーターを閉じるたびに CERT を再インストールする必要があるため)、http://wp7certinstaller.codeplex.com/コードを作成して、テスト目的で IIS でホストされている場合に機能するようにしています。

助けてくれてありがとう@Rajesh。

于 2012-10-25T23:21:27.927 に答える