Megosztás a következőn keresztül:


Útmutató: Összevont ügyfél létrehozása

A Windows Communication Foundationben (WCF) az összevont szolgáltatáshoz tartozó ügyfél létrehozása három fő lépésből áll:

  1. Konfiguráljon wsFederationHttpBinding <> vagy hasonló egyéni kötést. A megfelelő kötések létrehozásával kapcsolatos további információkért lásd : WSFederationHttpBinding létrehozása. Másik lehetőségként futtassa a ServiceModel metadata segédprogramot (Svcutil.exe) az összevont szolgáltatás metaadat-végpontja mellett, hogy létrehozzon egy konfigurációs fájlt az összevont szolgáltatással és egy vagy több biztonsági jogkivonat-szolgáltatással való kommunikációhoz.

  2. Adja meg az IssuedTokenClientCredential ügyfél biztonsági jogkivonat-szolgáltatással való interakciójának különböző aspektusait vezérlő tulajdonságokat.

  3. Adja meg a X509CertificateRecipientClientCredentialtulajdonságát, amely lehetővé teszi a biztonságos kommunikációhoz szükséges tanúsítványokat az adott végpontokkal, például a biztonsági jogkivonat-szolgáltatásokkal.

Feljegyzés

Előfordulhat CryptographicException , hogy az ügyfél megszemélyesített hitelesítő adatokat, WSFederationHttpBinding kötést vagy egyénileg kibocsátott jogkivonatot és aszimmetrikus kulcsokat használ. Az aszimmetrikus kulcsok a kötéssel és az WSFederationHttpBinding egyénileg kibocsátott jogkivonatokkal együtt használatosakAsymmetricKey, ha a tulajdonságok és KeyType a IssuedKeyType tulajdonságok értéke . Ez CryptographicException akkor jelenik meg, ha az ügyfél üzenetet próbál küldeni, és az ügyfél által megszemélyesített identitáshoz nem létezik felhasználói profil. A probléma megoldásához jelentkezzen be az ügyfélszámítógépre, vagy hívja fel LoadUserProfile az üzenetet.

Ez a témakör részletes információkat nyújt ezekről az eljárásokról. A megfelelő kötések létrehozásával kapcsolatos további információkért lásd : WSFederationHttpBinding létrehozása. Az összevont szolgáltatások működésével kapcsolatos további információkért lásd: Összevonás.

Összevont szolgáltatás konfigurációjának létrehozása és vizsgálata

  1. Futtassa a ServiceModel Metadata segédprogramot (Svcutil.exe) a szolgáltatás metaadat-URL-címének címével parancssori paraméterként.

  2. Nyissa meg a létrehozott konfigurációs fájlt egy megfelelő szerkesztőben.

  3. Vizsgálja meg a létrehozott kiállítói> és kiállítóiMetadata-elemek> attribútumait és <tartalmát.< Ezek a <wsFederationHttpBinding> vagy az< egyéni kötéselemek biztonsági> elemein belül találhatók. Győződjön meg arról, hogy a címek tartalmazzák a várt tartományneveket vagy más címadatokat. Fontos ellenőrizni ezeket az információkat, mert az ügyfél hitelesíti ezeket a címeket, és közzéteheti az olyan információkat, mint a felhasználónév/jelszó párok. Ha a cím nem a várt cím, akkor ez egy nem kívánt címzett tájékoztatását eredményezheti.

  4. Vizsgálja meg a megjegyzésként megadottalternativeIssuedTokenParameters><elemen belüli további< kibocsátottTokenParameters> elemeket. Ha az Svcutil.exe eszköz használatával hoz létre konfigurációt egy összevont szolgáltatáshoz, ha az összevont szolgáltatás vagy bármely köztes biztonsági jogkivonat-szolgáltatás nem ad meg kiállítói címet, hanem egy metaadat-címet ad meg egy olyan biztonsági jogkivonat-szolgáltatáshoz, amely több végpontot tesz elérhetővé, az eredményül kapott konfigurációs fájl az első végpontra hivatkozik. További végpontok a konfigurációs fájlban megjegyzésként szereplő <alternativeIssuedTokenParameters> elemekként találhatók.

    Állapítsa meg, hogy ezek <issuedTokenParameters> közül melyik előnyösebb-e a konfigurációban már meglévőhöz. Előfordulhat például, hogy az ügyfél inkább egy windowsos CardSpace-jogkivonatot használó biztonsági jogkivonat-szolgáltatásban szeretne hitelesítést végezni a felhasználónév/jelszó pár helyett.

    Feljegyzés

    Ha több biztonsági jogkivonat-szolgáltatást kell bejárni a szolgáltatással való kommunikáció előtt, előfordulhat, hogy egy köztes biztonsági jogkivonat-szolgáltatás helytelen biztonsági jogkivonat-szolgáltatásra irányítja az ügyfelet. Ezért győződjön meg arról, hogy a kibocsátottTokenParameters> biztonsági jogkivonat-szolgáltatás <végpontja a várt biztonsági jogkivonat-szolgáltatás, nem pedig ismeretlen biztonsági jogkivonat-szolgáltatás.

IssuedTokenClientCredential konfigurálása kódban

  1. IssuedTokenClientCredential Az osztály (az osztály tulajdonsága ClientBase<TChannel> által ClientCredentials visszaadott vagy az osztályon keresztül visszaadott) tulajdonságán ClientCredentials keresztül IssuedToken érheti el az ChannelFactory alábbi példakódban látható módon.

    IssuedTokenClientCredential itcc = client.ClientCredentials.IssuedToken;
    
    Dim itcc As IssuedTokenClientCredential = client.ClientCredentials.IssuedToken
    
  2. Ha a jogkivonat gyorsítótárazása nem szükséges, állítsa a tulajdonságot a CacheIssuedTokens következőre false: . A CacheIssuedTokens tulajdonság azt szabályozza, hogy a biztonsági jogkivonat-szolgáltatásból származó ilyen jogkivonatok gyorsítótárazva legyenek-e. Ha ez a tulajdonság be van állítva false, az ügyfél új jogkivonatot kér a biztonsági jogkivonat-szolgáltatástól, amikor újra hitelesítenie kell magát az összevont szolgáltatásban, függetlenül attól, hogy az előző jogkivonat még érvényes-e. Ha ez a tulajdonság be van állítva true, az ügyfél újra felhasznál egy meglévő jogkivonatot, amikor újra hitelesítenie kell magát az összevont szolgáltatásban (feltéve, hogy a jogkivonat még nem járt le). Az alapértelmezett érték true.

  3. Ha a gyorsítótárazott jogkivonatokon időkorlátra van szükség, állítsa be a MaxIssuedTokenCachingTime tulajdonságot egy TimeSpan értékre. A tulajdonság megadja, hogy mennyi ideig gyorsítótárazható egy jogkivonat. A megadott időtartam leteltét követően a jogkivonat el lesz távolítva az ügyfél-gyorsítótárból. Alapértelmezés szerint a jogkivonatok gyorsítótárazása határozatlan ideig. Az alábbi példa az időtartamot 10 percre állítja.

    itcc.MaxIssuedTokenCachingTime = new TimeSpan(0, 10, 0);
    
    itcc.MaxIssuedTokenCachingTime = New TimeSpan(0, 10, 0)
    
  4. Opcionális. Állítsa be a IssuedTokenRenewalThresholdPercentage százalékos értéket. Az alapértelmezett érték 60 (százalék). A tulajdonság a jogkivonat érvényességi időtartamának százalékos értékét adja meg. Ha például a kibocsátott jogkivonat 10 órán át érvényes, és IssuedTokenRenewalThresholdPercentage 80-ra van állítva, akkor a jogkivonat nyolc óra elteltével megújul. Az alábbi példa 80 százalékra állítja az értéket.

    itcc.IssuedTokenRenewalThresholdPercentage = 80;
    
    itcc.IssuedTokenRenewalThresholdPercentage = 80
    

    A jogkivonat érvényességi időtartama és az IssuedTokenRenewalThresholdPercentage érték által meghatározott megújítási időközt felül kell bírálni azokban az MaxIssuedTokenCachingTime esetekben, amikor a gyorsítótárazási idő rövidebb a megújítási küszöbértéknél. Ha például a jogkivonat terméke IssuedTokenRenewalThresholdPercentage és időtartama nyolc óra, és az MaxIssuedTokenCachingTime érték 10 perc, az ügyfél 10 percenként kapcsolatba lép a biztonsági jogkivonat szolgáltatással egy frissített jogkivonatért.

  5. Ha egy CombinedEntropy olyan kötésen, amely nem használja az üzenetbiztonságot vagy az átvitel biztonságát üzenet hitelesítő adatokkal (például a kötés nem rendelkezik SecurityBindingElementilyennel), állítsa a DefaultKeyEntropyMode tulajdonságot megfelelő értékre. Az entrópia mód határozza meg, hogy a szimmetrikus kulcsok vezérelhetők-e a DefaultKeyEntropyMode tulajdonság használatával. Ez az alapértelmezett érték CombinedEntropy, ahol az ügyfél és a jogkivonat-kiállító is olyan adatokat ad meg, amelyek a tényleges kulcs előállításához vannak kombinálva. Más értékek a következők ClientEntropyServerEntropy, ami azt jelenti, hogy a teljes kulcsot az ügyfél vagy a kiszolgáló adja meg. Az alábbi példa úgy állítja be a tulajdonságot, hogy csak a kiszolgálói adatokat használja a kulcshoz.

    itcc.DefaultKeyEntropyMode = SecurityKeyEntropyMode.ServerEntropy;
    
    itcc.DefaultKeyEntropyMode = SecurityKeyEntropyMode.ServerEntropy
    

    Feljegyzés

    Ha egy SecurityBindingElement biztonsági jogkivonat szolgáltatásban vagy szolgáltatáskötésben van jelen, akkor a DefaultKeyEntropyMode bekapcsolás IssuedTokenClientCredential értékét felülbírálta a rendszer a KeyEntropyModeSecurityBindingElement.

  6. Konfigurálja a kiállítóspecifikus végpont viselkedését úgy, hogy hozzáadja őket a IssuerChannelBehaviors tulajdonság által visszaadott gyűjteményhez.

    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior);
    
    itcc.LocalIssuerChannelBehaviors.Add(myEndpointBehavior)
    

A IssuedTokenClientCredential konfigurálása konfigurációban

  1. Hozzon létre egy kibocsátottToken> elemet a< kibocsátottToken> elem gyermekeként egy végponti viselkedésben.<

  2. Ha a jogkivonat gyorsítótárazása nem szükséges, állítsa az cacheIssuedTokens attribútumot (az><issuedTokenelemhez) a következőrefalse: .

  3. Ha a gyorsítótárazott jogkivonatokon időkorlátra van szükség, állítsa az maxIssuedTokenCachingTime elem attribútumát <issuedToken> egy megfelelő értékre. Példa:
    <issuedToken maxIssuedTokenCachingTime='00:10:00' />

  4. Ha az alapértelmezett értéken kívül más érték van előnyben, állítsa az issuedTokenRenewalThresholdPercentage<issuedToken> elem attribútumát egy megfelelő értékre, például:

    <issuedToken issuedTokenRenewalThresholdPercentage = "80" />  
    
  5. Ha egy olyan kötésen kívüli CombinedEntropy kulcs-entrópia mód, amely nem használja az üzenetbiztonságot vagy az üzenetbiztonságot az üzenet hitelesítő adataival (például a kötés nem rendelkezik SecurityBindingElement), állítsa az defaultKeyEntropyMode elem attribútumát <issuedToken> egy vagy ServerEntropyClientEntropy szükség szerint.

    <issuedToken defaultKeyEntropyMode = "ServerEntropy" />  
    
  6. Opcionális. Konfigurálja a kiállítóspecifikus egyéni végpont viselkedését úgy, hogy létrehoz egy <issuerChannelBehaviors> elemet az <issuedToken> elem gyermekelemeként. Minden viselkedéshez hozzon létre egy <add> elemet az <issuerChannelBehaviors> elem gyermekeként. Adja meg a viselkedés kiállítói címét az elem attribútumának issuerAddress<add> beállításával. Adja meg magát a viselkedést az elem attribútumának behaviorConfiguration<add> beállításával.

    <issuerChannelBehaviors>  
    <add issuerAddress="http://fabrikam.org/sts" behaviorConfiguration="FabrikamSTS" />  
    </issuerChannelBehaviors>  
    

X509CertificateRecipientClientCredential konfigurálása kódban

  1. Hozzáférés az X509CertificateRecipientClientCredentialServiceCertificate osztály vagy ChannelFactory a tulajdonság tulajdonságának tulajdonságán ClientBase<TChannel>ClientCredentials keresztül.

    X509CertificateRecipientClientCredential rcc =
        client.ClientCredentials.ServiceCertificate;
    
    Dim rcc As X509CertificateRecipientClientCredential = _
    client.ClientCredentials.ServiceCertificate
    
  2. Ha egy X509Certificate2 példány elérhető egy adott végpont tanúsítványához, használja a Add tulajdonság által visszaadott gyűjtemény metódusát ScopedCertificates .

    rcc.ScopedCertificates.Add(new Uri("http://fabrikam.com/sts"), cert);
    
    rcc.ScopedCertificates.Add(New Uri("http://fabrikam.com/sts"), cert)
    
  3. Ha egy X509Certificate2 példány nem érhető el, használja az SetScopedCertificate osztály metódusát az X509CertificateRecipientClientCredential alábbi példában látható módon.

    public void snippet20(CalculatorClient client)
    {
        X509CertificateRecipientClientCredential rcc = client.ClientCredentials.ServiceCertificate;
        rcc.SetScopedCertificate(StoreLocation.CurrentUser,
                                 StoreName.TrustedPeople,
                                 X509FindType.FindBySubjectName,
                                 "FabrikamSTS",
                                 new Uri("http://fabrikam.com/sts"));
    }
    
    rcc.SetScopedCertificate(StoreLocation.CurrentUser, _
                StoreName.TrustedPeople, _
                X509FindType.FindBySubjectName, _
                "FabrikamSTS", _
                New Uri("http://fabrikam.com/sts"))
    

X509CertificateRecipientClientCredential konfigurálása konfigurációban

  1. Hozzon létre egy <scopedCertificates> elemet a <serviceCertificate> elem gyermekeként, amely maga az <ügyfél hitelesítő adatai> elem gyermeke egy végpont viselkedésében.

  2. <add> Elem létrehozása az elem gyermekeként<scopedCertificates>. Adja meg a storeLocationmegfelelő tanúsítványra hivatkozó , storeName, x509FindTypeés findValue attribútumok értékeit. Állítsa az targetUri attribútumot olyan értékre, amely megadja a tanúsítvány által használt végpont címét az alábbi példában látható módon.

    <scopedCertificates>  
     <add targetUri="http://fabrikam.com/sts"
          storeLocation="CurrentUser"  
          storeName="TrustedPeople"  
          x509FindType="FindBySubjectName"  
          findValue="FabrikamSTS" />  
    </scopedCertificates>  
    

Példa

Az alábbi kódminta az osztály egy példányát konfigurálja a IssuedTokenClientCredential kódban.

// This method configures the IssuedToken property of the Credentials property of a proxy/channel factory
public static void ConfigureIssuedTokenClientCredentials(ChannelFactory cf, bool cacheTokens,
                                                          TimeSpan tokenCacheTime, int renewalPercentage,
                                                          SecurityKeyEntropyMode entropyMode
                                                          )
{
    if (cf == null)
    {
        throw new ArgumentNullException("cf");
    }
    // Set the CacheIssuedTokens property
    cf.Credentials.IssuedToken.CacheIssuedTokens = cacheTokens;

    // Set the MaxIssuedTokenCachingTime property
    cf.Credentials.IssuedToken.MaxIssuedTokenCachingTime = tokenCacheTime;

    // Set the IssuedTokenRenewalThresholdPercentage property
    cf.Credentials.IssuedToken.IssuedTokenRenewalThresholdPercentage = renewalPercentage;

    // Set the DefaultKeyEntropyMode property
    cf.Credentials.IssuedToken.DefaultKeyEntropyMode = entropyMode;
}

' This method configures the IssuedToken property of the Credentials property of a proxy/channel factory
Public Shared Sub ConfigureIssuedTokenClientCredentials(ByVal cf As ChannelFactory, _
                                                        ByVal cacheTokens As Boolean, _
                                                        ByVal tokenCacheTime As TimeSpan, _
                                                        ByVal renewalPercentage As Integer, _
                                                        ByVal entropyMode As SecurityKeyEntropyMode)
    If cf Is Nothing Then
        Throw New ArgumentNullException("ChannelFactory")
    End If
    ' Set the CacheIssuedTokens property
    With cf.Credentials.IssuedToken
        .CacheIssuedTokens = cacheTokens

        ' Set the MaxIssuedTokenCachingTime property
        .MaxIssuedTokenCachingTime = tokenCacheTime

        ' Set the IssuedTokenRenewalThresholdPercentage property
        .IssuedTokenRenewalThresholdPercentage = renewalPercentage

        ' Set the DefaultKeyEntropyMode property
        .DefaultKeyEntropyMode = entropyMode
    End With
End Sub

.NET-keretrendszer Security

A lehetséges információk felfedésének megakadályozása érdekében az összevont végpontok metaadatainak feldolgozására Svcutil.exe eszközt futtató ügyfeleknek gondoskodniuk kell arról, hogy az eredményül kapott biztonsági jogkivonat-szolgáltatáscímek a vártak legyenek. Ez különösen akkor fontos, ha egy biztonsági jogkivonat-szolgáltatás több végpontot is elérhetővé tesz, mivel a Svcutil.exe eszköz létrehozza az eredményül kapott konfigurációs fájlt az első ilyen végpont használatához, amely lehet, hogy nem az, amelyet az ügyfélnek használnia kell.

LocalIssuer Kötelező

Ha az ügyfeleknek mindig helyi kiállítót kell használniuk, vegye figyelembe a következőket: a Svcutil.exe alapértelmezett kimenete azt eredményezi, hogy a helyi kiállító nem lesz használatban, ha a lánc utolsó előtti biztonsági jogkivonat-szolgáltatása a kiállító címét vagy a kiállító metaadat-címét adja meg.

Az osztály beállításával LocalIssuerAddressLocalIssuerBindingés LocalIssuerChannelBehaviors tulajdonságaival IssuedTokenClientCredential kapcsolatos további információkért lásd: Útmutató: Helyi kiállító konfigurálása.

Hatókörrel rendelkező tanúsítványok

Ha szolgáltatástanúsítványokat kell megadni a biztonsági jogkivonat-szolgáltatások bármelyikével való kommunikációhoz, általában azért, mert a tanúsítvány-egyeztetés nincs használatban, akkor az ScopedCertificatesX509CertificateRecipientClientCredential osztály tulajdonságával adhatók meg. A SetDefaultCertificate metódus egy Uri és egy paramétert X509Certificate2 vesz igénybe. A megadott tanúsítványt a rendszer a végpontokkal való kommunikációhoz használja a megadott URI-n. Másik lehetőségként a SetScopedCertificate metódussal tanúsítványt adhat hozzá a tulajdonság által visszaadott gyűjteményhez ScopedCertificates .

Feljegyzés

Az adott URI-ra hatókörrel rendelkező tanúsítványok ügyfélgondolata csak azokra az alkalmazásokra vonatkozik, amelyek kimenő hívásokat intéznek az olyan szolgáltatásokhoz, amelyek végpontokat fednek le ezeken az URI-kon. Nem vonatkozik azokra a tanúsítványokra, amelyek a kiadott jogkivonatok aláírására szolgálnak, például a kiszolgálón az osztály által KnownCertificatesIssuedTokenServiceCredential visszaadott gyűjteményben konfigurált tanúsítványokra. További információ : Hitelesítő adatok konfigurálása összevonási szolgáltatáson.

Lásd még