IIS6 上の WCF でユーザー認証のない https 通信をさせる (成功)

IISの設定

  • セキュリティで保護されたチャネル(SSL)を要求する
  • 統合Windows認証を無効にし、匿名アクセスを有効にする
  • SSL証明書をインストールし、SSLポートとして 10444 を指定する。

iIS側の Web.Config 内での WCF 設定

  <system.serviceModel>
    <bindings>
      <ws2007HttpBinding>
        <binding name="NoAuthBehavior">
          <security mode="Transport">
            <transport clientCredentialType="None" />
            <message clientCredentialType="None" />
          </security>
        </binding>
      </ws2007HttpBinding>
    </bindings>
    <behaviors />
    <client>
      <endpoint address="https://sv.example.com:10444/exampleService.svc"
          binding="ws2007HttpBinding" bindingConfiguration="NoAuthBehavior" contract="IExampleService"
          name="exampleServiceHttps" >
      </endpoint>
    </client>
  </system.serviceModel>

クライアント側のApp.Config 等の WCF 設定

 <system.serviceModel>
        <bindings>
              <ws2007HttpBinding>
                    <binding name="NoAuthBehavior">
                          <security mode="Transport">
                                <transport clientCredentialType="None" />
                                <message clientCredentialType="None" />
                          </security>
                    </binding>
              </ws2007HttpBinding>
        </bindings>
        <client>
              <endpoint address="https://sv.example.com:10444/exampleService.svc"
                    binding="ws2007HttpBinding" bindingConfiguration="NoAuthBehavior"
                    contract="IExampleService" name="exampleServiceHttps" />
        </client>
    </system.serviceModel>

WCF設定におけるポイント

  • bindingのベースとしては "ws2007HttpBindings" を利用した。wsHttpBindings と比べるとW3Cに対して相互運用性が高い。ただし .NET Framework 3.5 で登場した新しいbinding である。
  • bindingConfiguration において、security mode=Transport を指定。この指定が「通信路を最初から SSL で保護しろ」という意味の指定となる。
  • bindingConfiguration において、clientCredentialType=None を指定。クライアント側の資格証明を要求しない。

WCF Service Configration Editor での設定箇所は以下の通り

 

通ってしまえばどうということもないのだが、設定変更中は何が問題なのかを把握するのが困難。少なくともサーバ側とクライアント側の設定を一致させるということが第一歩でありながら、途中サーバ側だけ変更して通らずに悩むという場面が多々あったように思う。

WCF Service Configuration Editor が2つの configファイルを同時編集してくれるようになればそれだけでかなり生産性向上すると思われる。後でフィードバックセンターに提案してみよう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。