Útmutató: Egyéni ügyfél- és szolgáltatás hitelesítő adatok létrehozása
Ez a témakör bemutatja, hogyan implementálhat egyéni ügyfél- és szolgáltatás-hitelesítő adatokat, és hogyan használhat egyéni hitelesítő adatokat az alkalmazáskódból.
Hitelesítő adatok bővíthetőségi osztályai
A ClientCredentials Windows Communication Foundation (WCF) biztonsági bővíthetőségének fő belépési pontjai és ServiceCredentials osztályai. Ezek a hitelesítőadat-osztályok biztosítják azokat az API-kat, amelyek lehetővé teszik az alkalmazáskód számára a hitelesítő adatok beállítását és a hitelesítő adatok típusainak biztonsági jogkivonatokká való átalakítását. (A biztonsági jogkivonatok a SOAP-üzeneteken belüli hitelesítő adatok továbbítására szolgáló űrlapok.) A hitelesítő adatok osztályainak feladatai két területre oszthatók:
Adja meg az alkalmazások API-jait a hitelesítő adatok beállításához.
Az implementációkhoz SecurityTokenManager gyárként kell elvégeznie.
A WCF-ben megadott alapértelmezett implementációk támogatják a rendszer által biztosított hitelesítőadat-típusokat, és létrehoznak egy biztonsági jogkivonat-kezelőt, amely képes kezelni ezeket a hitelesítő adatokat.
A testreszabás okai
Az ügyfél- vagy szolgáltatás hitelesítőadat-osztályok testreszabásának több oka is van. Elsősorban az a követelmény, hogy módosítsa az alapértelmezett WCF biztonsági viselkedést a rendszer által biztosított hitelesítő adatok típusainak kezelése tekintetében, különösen a következő okok miatt:
Más bővíthetőségi pontok használatával nem lehetséges módosítások.
Új hitelesítőadat-típusok hozzáadása.
Új egyéni biztonsági jogkivonattípusok hozzáadása.
Ez a témakör bemutatja, hogyan implementálhat egyéni ügyfél- és szolgáltatás-hitelesítő adatokat, és hogyan használhatja őket alkalmazáskódból.
Sorozat első eleme
Az egyéni hitelesítő adatok osztályának létrehozása csak az első lépés, mivel a hitelesítő adatok testreszabásának oka a WCF viselkedésének módosítása a hitelesítő adatok kiépítésével, a biztonsági jogkivonat szerializálásával vagy hitelesítésével kapcsolatban. A szakasz további témakörei ismertetik, hogyan hozhat létre egyéni szerializálókat és hitelesítőket. Ebben a tekintetben az egyéni hitelesítő adatok osztályának létrehozása a sorozat első témaköre. Az ezt követő műveletek (egyéni szerializálók és hitelesítő adatok létrehozása) csak egyéni hitelesítő adatok létrehozása után végezhetők el. A témakörre épülő további témakörök a következők:
Útmutató: Egyéni biztonsági jogkivonat-szolgáltató létrehozása
Útmutató: Egyéni biztonsági jogkivonat-hitelesítő létrehozása
Útmutató: Egyéni jogkivonat létrehozása.
Eljárások
Egyéni ügyfél hitelesítő adatainak implementálása
Definiáljon egy új osztályt, amely az ClientCredentials osztályból származik.
Opcionális. Adjon hozzá új metódusokat vagy tulajdonságokat az új hitelesítő adatokhoz. Ha nem ad hozzá új hitelesítő adatokat, hagyja ki ezt a lépést. Az alábbi példa egy tulajdonságot
CreditCardNumber
ad hozzá.Bírálja felül a metódust CreateSecurityTokenManager . Ezt a metódust a WCF biztonsági infrastruktúrája automatikusan meghívja az egyéni ügyfél hitelesítő adatainak használatakor. Ez a módszer felelős az osztály implementációjának egy példányának létrehozásáért és visszaadásáért SecurityTokenManager .
Fontos
Fontos megjegyezni, hogy a CreateSecurityTokenManager metódus felülbírált egy egyéni biztonsági jogkivonat-kezelő létrehozásához. A biztonsági jogkivonat-kezelőnek ClientCredentialsSecurityTokenManagera tényleges biztonsági jogkivonat létrehozásához egy egyéni biztonsági jogkivonat-szolgáltatót kell visszaadnia, amelyből SecurityTokenProviderszármazik. Ha nem követi ezt a mintát a biztonsági jogkivonatok létrehozásához, előfordulhat, hogy az alkalmazás helytelenül ChannelFactory működik az objektumok gyorsítótárazásakor (ez a WCF-ügyfélproxyk alapértelmezett viselkedése), ami a jogosultsági támadások emelkedését eredményezheti. Az egyéni hitelesítőadat-objektum a gyorsítótárazás részeként lesz gyorsítótárazva.ChannelFactory Az egyéni beállítások SecurityTokenManager azonban minden meghíváskor létrejönnek, ami csökkenti a biztonsági fenyegetést, amíg a jogkivonat-létrehozási logika a SecurityTokenManager.
Bírálja felül a metódust CloneCore .
public class MyClientCredentials : ClientCredentials { string creditCardNumber; public MyClientCredentials() { // Perform client credentials initialization. } protected MyClientCredentials(MyClientCredentials other) : base(other) { // Clone fields defined in this class. this.creditCardNumber = other.creditCardNumber; } public string CreditCardNumber { get { return this.creditCardNumber; } set { if (value == null) { throw new ArgumentNullException("value"); } this.creditCardNumber = value; } } public override SecurityTokenManager CreateSecurityTokenManager() { // Return your implementation of the SecurityTokenManager. return new MyClientCredentialsSecurityTokenManager(this); } protected override ClientCredentials CloneCore() { // Implement the cloning functionality. return new MyClientCredentials(this); } }
Public Class MyClientCredentials Inherits ClientCredentials Private creditCardNumberValue As String Public Sub New() End Sub ' Perform client credentials initialization. Protected Sub New(ByVal other As MyClientCredentials) MyBase.New(other) ' Clone fields defined in this class. Me.creditCardNumberValue = other.creditCardNumberValue End Sub Public Property CreditCardNumber() As String Get Return Me.creditCardNumberValue End Get Set If value Is Nothing Then Throw New ArgumentNullException("value") End If Me.creditCardNumberValue = value End Set End Property Public Overrides Function CreateSecurityTokenManager() As SecurityTokenManager ' Return your implementation of the SecurityTokenManager. Return New MyClientCredentialsSecurityTokenManager(Me) End Function Protected Overrides Function CloneCore() As ClientCredentials ' Implement the cloning functionality. Return New MyClientCredentials(Me) End Function End Class
Egyéni ügyfélbiztonsági jogkivonat-kezelő implementálása
Adjon meg egy új osztályt, amelyből származik ClientCredentialsSecurityTokenManager.
Opcionális. Bírálja felül a CreateSecurityTokenProvider(SecurityTokenRequirement) metódust, ha egyéni SecurityTokenProvider implementációt kell létrehoznia. Az egyéni biztonsági jogkivonat-szolgáltatókkal kapcsolatos további információkért lásd : Egyéni biztonsági jogkivonat-szolgáltató létrehozása.
Opcionális. Bírálja felül a CreateSecurityTokenAuthenticator(SecurityTokenRequirement, SecurityTokenResolver) metódust, ha egyéni SecurityTokenAuthenticator implementációt kell létrehoznia. Az egyéni biztonsági jogkivonat-hitelesítőkkel kapcsolatos további információkért lásd : Egyéni biztonsági jogkivonat-hitelesítő létrehozása.
Opcionális. Felülbírálja a CreateSecurityTokenSerializer metódust, ha egyénit SecurityTokenSerializer kell létrehoznia. További információ az egyéni biztonsági jogkivonatokról és az egyéni biztonsági jogkivonat szerializálóiról: Egyéni jogkivonat létrehozása.
internal class MyClientCredentialsSecurityTokenManager : ClientCredentialsSecurityTokenManager { MyClientCredentials credentials; public MyClientCredentialsSecurityTokenManager(MyClientCredentials credentials) : base(credentials) { this.credentials = credentials; } public override SecurityTokenProvider CreateSecurityTokenProvider( SecurityTokenRequirement tokenRequirement) { // Return your implementation of the SecurityTokenProvider, if required. // This implementation delegates to the base class. return base.CreateSecurityTokenProvider(tokenRequirement); } public override SecurityTokenAuthenticator CreateSecurityTokenAuthenticator( SecurityTokenRequirement tokenRequirement, out SecurityTokenResolver outOfBandTokenResolver) { // Return your implementation of the SecurityTokenAuthenticator, if required. // This implementation delegates to the base class. return base.CreateSecurityTokenAuthenticator(tokenRequirement, out outOfBandTokenResolver); } public override SecurityTokenSerializer CreateSecurityTokenSerializer(SecurityTokenVersion version) { // Return your implementation of the SecurityTokenSerializer, if required. // This implementation delegates to the base class. return base.CreateSecurityTokenSerializer(version); } }
Friend Class MyClientCredentialsSecurityTokenManager Inherits ClientCredentialsSecurityTokenManager Private credentials As MyClientCredentials Public Sub New(ByVal credentials As MyClientCredentials) MyBase.New(credentials) Me.credentials = credentials End Sub Public Overrides Function CreateSecurityTokenProvider( _ ByVal tokenRequirement As SecurityTokenRequirement) As SecurityTokenProvider ' Return your implementation of the SecurityTokenProvider, if required. ' This implementation delegates to the base class. Return MyBase.CreateSecurityTokenProvider(tokenRequirement) End Function Public Overrides Function CreateSecurityTokenAuthenticator( _ ByVal tokenRequirement As SecurityTokenRequirement, _ ByRef outOfBandTokenResolver As SecurityTokenResolver) As SecurityTokenAuthenticator ' Return your implementation of the SecurityTokenAuthenticator, if required. ' This implementation delegates to the base class. Return MyBase.CreateSecurityTokenAuthenticator(tokenRequirement, outOfBandTokenResolver) End Function Public Overrides Function CreateSecurityTokenSerializer(ByVal version As SecurityTokenVersion) _ As SecurityTokenSerializer ' Return your implementation of the SecurityTokenSerializer, if required. ' This implementation delegates to the base class. Return MyBase.CreateSecurityTokenSerializer(version) End Function End Class
Egyéni ügyfél hitelesítő adatainak használata az alkalmazáskódból
Hozzon létre egy példányt a létrehozott ügyfélről, amely a szolgáltatási felületet jelöli, vagy hozzon létre egy példányt, amely egy ChannelFactory olyan szolgáltatásra mutat, amellyel kommunikálni szeretne.
Távolítsa el a rendszer által biztosított ügyfél-hitelesítő adatok viselkedését a Behaviors gyűjteményből, amely a Endpoint tulajdonságon keresztül érhető el.
Hozzon létre egy új példányt egy egyéni ügyfél hitelesítőadat-osztályához, és adja hozzá a Behaviors gyűjteményhez, amely a Endpoint tulajdonságon keresztül érhető el.
// Create a client with the client endpoint configuration. CalculatorClient client = new CalculatorClient(); // Remove the ClientCredentials behavior. client.ChannelFactory.Endpoint.Behaviors.Remove<ClientCredentials>(); // Add a custom client credentials instance to the behaviors collection. client.ChannelFactory.Endpoint.Behaviors.Add(new MyClientCredentials());
' Create a client with the client endpoint configuration. Dim client As New CalculatorClient() ' Remove the ClientCredentials behavior. client.ChannelFactory.Endpoint.Behaviors.Remove(Of ClientCredentials)() ' Add a custom client credentials instance to the behaviors collection. client.ChannelFactory.Endpoint.Behaviors.Add(New MyClientCredentials())
Az előző eljárás bemutatja, hogyan használhatja az ügyfél hitelesítő adatait az alkalmazáskódból. A WCF hitelesítő adatai az alkalmazáskonfigurációs fájllal is konfigurálhatók. Az alkalmazáskonfiguráció használata gyakran előnyösebb a kemény kódoláshoz, mivel lehetővé teszi az alkalmazásparaméterek módosítását anélkül, hogy módosítania kellene a forrást, újrafordítást és újratelepítést.
A következő eljárás azt ismerteti, hogyan lehet támogatást nyújtani az egyéni hitelesítő adatok konfigurálásához.
Konfigurációkezelő létrehozása egyéni ügyfél hitelesítő adataihoz
Adjon meg egy új osztályt, amelyből származik ClientCredentialsElement.
Opcionális. Adjon hozzá tulajdonságokat az alkalmazáskonfiguráción keresztül elérhetővé tenni kívánt összes további konfigurációs paraméterhez. Az alábbi példa egy nevű
CreditCardNumber
tulajdonságot ad hozzá.BehaviorType A tulajdonság felülbírálása a konfigurációelemhez létrehozott egyéni ügyfél-hitelesítőadat-osztály típusának visszaadásához.
Bírálja felül a metódust CreateBehavior . A metódus feladata az egyéni hitelesítőadat-osztály egy példányának létrehozása és visszaadása a konfigurációs fájlból betöltött beállítások alapján. Hívja meg az alapmetódust ApplyConfiguration(ClientCredentials) ebből a metódusból, hogy lekérje az egyéni ügyfél hitelesítő adatainak példányába betöltött rendszer által biztosított hitelesítőadat-beállításokat.
Opcionális. Ha a 2. lépésben további tulajdonságokat adott hozzá, felül kell bírálnia a Properties tulajdonságot, hogy regisztrálhassa a konfigurációs keretrendszer további konfigurációs beállításait, hogy felismerje őket. Egyesítse a tulajdonságokat az alaposztály tulajdonságaival, hogy a rendszer által megadott beállítások konfigurálhatók legyenek ezen az egyéni ügyfél-hitelesítő adatok konfigurációs elemén keresztül.
public class MyClientCredentialsConfigHandler : ClientCredentialsElement { ConfigurationPropertyCollection properties; public override Type BehaviorType { get { return typeof(MyClientCredentials); } } public string CreditCardNumber { get { return (string)base["creditCardNumber"]; } set { if (String.IsNullOrEmpty(value)) { value = String.Empty; } base["creditCardNumber"] = value; } } protected override ConfigurationPropertyCollection Properties { get { if (this.properties == null) { ConfigurationPropertyCollection properties = base.Properties; properties.Add(new ConfigurationProperty( "creditCardNumber", typeof(System.String), string.Empty, null, new StringValidator(0, 32, null), ConfigurationPropertyOptions.None)); this.properties = properties; } return this.properties; } } protected override object CreateBehavior() { MyClientCredentials creds = new MyClientCredentials(); creds.CreditCardNumber = CreditCardNumber; base.ApplyConfiguration(creds); return creds; } }
Public Class MyClientCredentialsConfigHandler Inherits ClientCredentialsElement Private propertiesValue As ConfigurationPropertyCollection Public Overrides ReadOnly Property BehaviorType() As Type Get Return GetType(MyClientCredentials) End Get End Property Public Property CreditCardNumber() As String Get Return CStr(MyBase.Item("creditCardNumber")) End Get Set If String.IsNullOrEmpty(value) Then value = String.Empty End If MyBase.Item("creditCardNumber") = value End Set End Property Protected Overrides ReadOnly Property Properties() As ConfigurationPropertyCollection Get If Me.propertiesValue Is Nothing Then Dim myProperties As ConfigurationPropertyCollection = MyBase.Properties myProperties.Add(New ConfigurationProperty( _ "creditCardNumber", _ GetType(System.String), _ String.Empty, _ Nothing, _ New StringValidator(0, 32, Nothing), _ ConfigurationPropertyOptions.None)) Me.propertiesValue = myProperties End If Return Me.propertiesValue End Get End Property Protected Overrides Function CreateBehavior() As Object Dim creds As New MyClientCredentials() creds.CreditCardNumber = Me.CreditCardNumber MyBase.ApplyConfiguration(creds) Return creds End Function End Class
Miután megkapta a konfigurációkezelő osztályt, az integrálható a WCF konfigurációs keretrendszerbe. Ez lehetővé teszi az egyéni ügyfél hitelesítő adatainak használatát az ügyfélvégpont viselkedési elemeiben, ahogyan az a következő eljárásban is látható.
Egyéni ügyfél-hitelesítő adatok konfigurációkezelőjének regisztrálása és használata az alkalmazáskonfigurációban
Adjon hozzá egy <
extensions
> elemet és egy <behaviorExtensions
> elemet a konfigurációs fájlhoz.Adjon hozzá egy <
add
> elemet az <behaviorExtensions
> elemhez, és állítsa azname
attribútumot egy megfelelő értékre.Állítsa be az
type
attribútumot a teljes típusnévre. A szerelvény nevét és más szerelvényattribútumokat is tartalmazza.<system.serviceModel> <extensions> <behaviorExtensions> <add name="myClientCredentials" type="Microsoft.ServiceModel.Samples.MyClientCredentialsConfigHandler, CustomCredentials, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> </behaviorExtensions> </extensions> </system.serviceModel>
A konfigurációkezelő regisztrálása után az egyéni hitelesítő adatok elem a rendszer által biztosított <
clientCredentials
> elem helyett ugyanabban a konfigurációs fájlban használható. A rendszer által biztosított tulajdonságokat és a konfigurációkezelő implementációjához hozzáadott új tulajdonságokat is használhatja. Az alábbi példa egy egyéni tulajdonság értékét állítja be azcreditCardNumber
attribútum használatával.<behaviors> <endpointBehaviors> <behavior name="myClientCredentialsBehavior"> <myClientCredentials creditCardNumber="123-123-123"/> </behavior> </endpointBehaviors> </behaviors>
Egyéni szolgáltatás hitelesítő adatainak megvalósítása
Adjon meg egy új osztályt, amelyből származik ServiceCredentials.
Opcionális. Adjon hozzá új tulajdonságokat, hogy API-kat biztosítson a hozzáadott új hitelesítő adatokhoz. Ha nem ad hozzá új hitelesítő adatokat, hagyja ki ezt a lépést. Az alábbi példa egy tulajdonságot
AdditionalCertificate
ad hozzá.Bírálja felül a metódust CreateSecurityTokenManager . Ezt a metódust a WCF-infrastruktúra automatikusan meghívja az egyéni ügyfél hitelesítő adatainak használatakor. A metódus feladata az osztály implementációjának egy példányának SecurityTokenManager létrehozása és visszaadása (a következő eljárásban leírtak szerint).
Opcionális. Bírálja felül a metódust CloneCore . Ez csak akkor szükséges, ha új tulajdonságokat vagy belső mezőket ad hozzá az egyéni ügyfél hitelesítő adatainak implementálásához.
public class MyServiceCredentials : ServiceCredentials { X509Certificate2 additionalCertificate; public MyServiceCredentials() { } protected MyServiceCredentials(MyServiceCredentials other) : base(other) { this.additionalCertificate = other.additionalCertificate; } public X509Certificate2 AdditionalCertificate { get { return this.additionalCertificate; } set { if (value == null) { throw new ArgumentNullException("value"); } this.additionalCertificate = value; } } public override SecurityTokenManager CreateSecurityTokenManager() { return base.CreateSecurityTokenManager(); } protected override ServiceCredentials CloneCore() { return new MyServiceCredentials(this); } }
Public Class MyServiceCredentials Inherits ServiceCredentials Private additionalCertificateValue As X509Certificate2 Public Sub New() End Sub Protected Sub New(ByVal other As MyServiceCredentials) MyBase.New(other) Me.additionalCertificate = other.additionalCertificate End Sub Public Property AdditionalCertificate() As X509Certificate2 Get Return Me.additionalCertificateValue End Get Set If value Is Nothing Then Throw New ArgumentNullException("value") End If Me.additionalCertificateValue = value End Set End Property Public Overrides Function CreateSecurityTokenManager() As SecurityTokenManager Return MyBase.CreateSecurityTokenManager() End Function Protected Overrides Function CloneCore() As ServiceCredentials Return New MyServiceCredentials(Me) End Function End Class
Egyéni szolgáltatásbiztonsági jogkivonat-kezelő implementálása
Definiáljon egy új osztályt, amely az ServiceCredentialsSecurityTokenManager osztályból származik.
Opcionális. Bírálja felül a CreateSecurityTokenProvider metódust, ha egyéni SecurityTokenProvider implementációt kell létrehoznia. Az egyéni biztonsági jogkivonat-szolgáltatókkal kapcsolatos további információkért lásd : Egyéni biztonsági jogkivonat-szolgáltató létrehozása.
Opcionális. Bírálja felül a CreateSecurityTokenAuthenticator metódust, ha egyéni SecurityTokenAuthenticator implementációt kell létrehoznia. További információ az egyéni biztonsági jogkivonat-hitelesítőkről : Útmutató: Egyéni biztonsági jogkivonat-hitelesítő létrehozása témakör.
Opcionális. Felülbírálja a CreateSecurityTokenSerializer(SecurityTokenVersion) metódust, ha egyénit SecurityTokenSerializer kell létrehoznia. További információ az egyéni biztonsági jogkivonatokról és az egyéni biztonsági jogkivonat szerializálóiról: Egyéni jogkivonat létrehozása.
internal class MyServiceCredentialsSecurityTokenManager : ServiceCredentialsSecurityTokenManager { MyServiceCredentials credentials; public MyServiceCredentialsSecurityTokenManager(MyServiceCredentials credentials) : base(credentials) { this.credentials = credentials; } public override SecurityTokenProvider CreateSecurityTokenProvider(SecurityTokenRequirement tokenRequirement) { // Return your implementation of SecurityTokenProvider, if required. // This implementation delegates to the base class. return base.CreateSecurityTokenProvider(tokenRequirement); } public override SecurityTokenAuthenticator CreateSecurityTokenAuthenticator(SecurityTokenRequirement tokenRequirement, out SecurityTokenResolver outOfBandTokenResolver) { // Return your implementation of SecurityTokenProvider, if required. // This implementation delegates to the base class. return base.CreateSecurityTokenAuthenticator(tokenRequirement, out outOfBandTokenResolver); } public override SecurityTokenSerializer CreateSecurityTokenSerializer(SecurityTokenVersion version) { // Return your implementation of SecurityTokenProvider, if required. // This implementation delegates to the base class. return base.CreateSecurityTokenSerializer(version); } }
Friend Class MyServiceCredentialsSecurityTokenManager Inherits ServiceCredentialsSecurityTokenManager Private credentials As MyServiceCredentials Public Sub New(ByVal credentials As MyServiceCredentials) MyBase.New(credentials) Me.credentials = credentials End Sub Public Overrides Function CreateSecurityTokenProvider(ByVal tokenRequirement As SecurityTokenRequirement) _ As SecurityTokenProvider ' Return your implementation of SecurityTokenProvider, if required. ' This implementation delegates to the base class. Return MyBase.CreateSecurityTokenProvider(tokenRequirement) End Function Public Overrides Function CreateSecurityTokenAuthenticator( _ ByVal tokenRequirement As SecurityTokenRequirement, _ ByRef outOfBandTokenResolver As SecurityTokenResolver) _ As SecurityTokenAuthenticator ' Return your implementation of SecurityTokenProvider, if required. ' This implementation delegates to the base class. Return MyBase.CreateSecurityTokenAuthenticator(tokenRequirement, outOfBandTokenResolver) End Function Public Overrides Function CreateSecurityTokenSerializer(ByVal version As SecurityTokenVersion) _ As SecurityTokenSerializer ' Return your implementation of SecurityTokenProvider, if required. ' This implementation delegates to the base class. Return MyBase.CreateSecurityTokenSerializer(version) End Function End Class
Egyéni szolgáltatás hitelesítő adatainak használata az alkalmazáskódból
Hozza létre a ServiceHost egy példányát.
Távolítsa el a rendszer által biztosított szolgáltatás hitelesítő adatainak viselkedését a Behaviors gyűjteményből.
Hozzon létre egy új példányt az egyéni szolgáltatás hitelesítő adatai osztályból, és adja hozzá a Behaviors gyűjteményhez.
// Create a service host with a service type. ServiceHost serviceHost = new ServiceHost(typeof(Service)); // Remove the default ServiceCredentials behavior. serviceHost.Description.Behaviors.Remove<ServiceCredentials>(); // Add a custom service credentials instance to the collection. serviceHost.Description.Behaviors.Add(new MyServiceCredentials());
' Create a service host with a service type. Dim serviceHost As New ServiceHost(GetType(Service)) ' Remove the default ServiceCredentials behavior. serviceHost.Description.Behaviors.Remove(Of ServiceCredentials)() ' Add a custom service credentials instance to the collection. serviceHost.Description.Behaviors.Add(New MyServiceCredentials())
Adja hozzá a konfiguráció támogatását az "" ésTo register and use a custom client credentials configuration handler in the application configuration
"To create a configuration handler for custom client credentials
" eljárásokban korábban ismertetett lépések használatával. Az egyetlen különbség az osztály használata az ServiceCredentialsElement osztály helyett a ClientCredentialsElement konfigurációkezelő alaposztályaként. Az egyéni szolgáltatás hitelesítő eleme ezután bárhol használható, ahol a rendszer által biztosított <serviceCredentials>
elemet használja.
Lásd még
- ClientCredentials
- ServiceCredentials
- SecurityCredentialsManager
- SecurityTokenManager
- ClientCredentialsElement
- ServiceCredentialsElement
- Útmutató: Egyéni biztonsági jogkivonat-szolgáltató létrehozása
- Útmutató: Egyéni biztonsági jogkivonat-hitelesítő létrehozása
- Útmutató: Egyéni jogkivonat létrehozása