3

.NET 4.5 とトークン ベースのセキュリティを使用して WCF サービスを実装しています。クライアント側では、myfact.CreateChannelWithIssuedToken()以前に STS から取得したトークンを使用して呼び出しています。このチャネルを使用してサービスを呼び出すと、(WCF サービス トレースで) 次のエラーが発生します。

Cannot resolve KeyInfo for decryption: KeyInfo 'SecurityKeyIdentifier
    (
    IsReadOnly = False,
    Count = 1,
    Clause[0] = EncryptedKeyIdentifierClause(EncryptedKey = qDJDOHUxLxDP8/5baRbY6LrnIX2cYLGwC8b9xDQbEfLsYhcowtszecfWK93dFQHBNV+COHSZpKapJlzrbi12QlObuhfpB08vIxrgXCLg69w4PfAq/jzJcK3N16GHHADSE6XT0KVBXQbcwJqyrELLGAc9ve3cnn52EDg6rkVKBNg=, Method 'http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p')
    ) ', available tokens 'System.ServiceModel.Security.AggregateSecurityHeaderTokenResolver'.

これは、サービスが受信したセキュリティ トークンを復号化できないためだと思われますが、その理由はわかりません。証明書は LocalMachine\My ストアにあり、関連付けられた秘密キーがあります。

WCF は必要な証明書をどのように見つけますか? また、私の場合はなぜ見つけられないのでしょうか?

4

1 に答える 1

4

サービス証明書が使用されていることがわかりました。これを修正すると(<serviceCertificate .../>ノブを介して:

<behavior name="my_service_behavior">
    <serviceCredentials useIdentityConfiguration="true" identityConfiguration="identity">
        <serviceCertificate 
            findValue="..." 
            x509FindType="FindByThumbprint" 
            storeName="My" 
            storeLocation="LocalMachine" />
    </serviceCredentials>
</behavior>

すべてが機能し始めました。

于 2013-03-15T14:14:27.700 に答える