9

wsHttpBinding とメッセージ セキュリティを備えた WCF サービスを作成しました。次に、サービス参照を追加した結果、クライアントの構成ファイルが次のように更新されました。

<client>
  <endpoint address="http://localhost:42160/Service1.svc/secure"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1"
    contract="SecureProxy.IService1" name="WSHttpBinding_IService1">
    <identity>
        <userPrincipalName value="baria2@mydomain.com" />
    </identity>
  </endpoint>
</client>

userPrincipalName の目的がわかりません。値を何に変更しても、クライアントとサービスは正常に通信します。何の役にも立たないようです。

このMSDN の記事では、目的を詳細に説明しようとしていますが、どういうわけか、何も説明していません。

それを WCF のストーリーに追加することで、Microsoft はどのような問題を解決しようとしていたのでしょうか? 繰り返しますが、値は好きなように変更できますが、クライアントとサービスには影響しません。

また、同様の質問があります。

4

3 に答える 3

1

一般に、upn はクライアントに対してサーバーを認証するためにあります (たとえば、クライアントが ssl でホストを検証するように、どのサーバーが信頼され、どのサーバーが信頼されないかをクライアントに指示します)。

upn の値が正しい場合、通信は kerberos を使用し、それが間違っている場合、通信は ntlm を使用すると思います (ある条件下で利用可能な場合)。ntlm を無効にしてみると、upn の正しい値のみが機能します。

<clientCredentials>
   <windows allowNtlm="false" />
</clientCredentials>

サーバーにブレークポイント/ログを設定し、ServiceSecurityContext.Current を確認することで、kerberos または ntlm が使用されたかどうかを確認する方法もあります。upn 値に応じて異なる値を取得する必要があります。

于 2013-07-25T22:12:35.887 に答える
-1

既定では、サービスが Windows 資格情報を使用するように構成されている場合、<identity>and<userPrincipalName>要素が生成されます。

于 2013-07-25T03:05:12.483 に答える