Sdílet prostřednictvím


Postupy: Určení přihlašovacích údajů pro zabezpečení kanálu

Moniker služby Wcf (Windows Communication Foundation) umožňuje aplikacím modelu COM volat služby WCF. Většina služeb WCF vyžaduje, aby klient zadal přihlašovací údaje pro ověřování a autorizaci. Při volání služby WCF z klienta WCF můžete tyto přihlašovací údaje zadat ve spravovaném kódu nebo v konfiguračním souboru aplikace. Při volání služby WCF z aplikace MODELU COM můžete použít IChannelCredentials rozhraní k zadání přihlašovacích údajů. Toto téma ukazuje různé způsoby zadávání přihlašovacích údajů pomocí IChannelCredentials rozhraní.

Poznámka:

IChannelCredentials je rozhraní založené na IDispatch a nebudete dostávat funkce IntelliSense v prostředí sady Visual Studio.

Tento článek použije službu WCF definovanou v ukázce zabezpečení zpráv.

Zadání klientského certifikátu

  1. Spuštěním souboru Setup.bat v adresáři Zabezpečení zpráv vytvořte a nainstalujte požadované testovací certifikáty.

  2. Otevřete projekt Zabezpečení zpráv.

  3. Přidejte [ServiceBehavior(Namespace="http://Microsoft.ServiceModel.Samples")] do ICalculator definice rozhraní.

  4. Přidejte bindingNamespace="http://Microsoft.ServiceModel.Samples" do značky koncového bodu v souboru App.config pro službu.

  5. Sestavte ukázku zabezpečení zpráv a spusťte Service.exe. Přejděte na identifikátor URI (http://localhost:8000/ServiceModelSamples/Service) služby a ujistěte se, že služba funguje.

  6. Otevřete Visual Basic 6.0 a vytvořte nový soubor standardního .exe. Přidejte tlačítko do formuláře a poklikáním na tlačítko přidejte následující kód do obslužné rutiny Kliknutí:

        monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl"  
        monString = monString + ", address=http://localhost:8000/ServiceModelSamples/Service"  
        monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples"  
        monString = monString + ", binding=BasicHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples"  
    
        Set monikerProxy = GetObject(monString)  
    
        'Set the Service Certificate.  
     monikerProxy.ChannelCredentials.SetServiceCertificateAuthentication "CurrentUser", "NoCheck", "PeerOrChainTrust"  
    monikerProxy.ChannelCredentials.SetDefaultServiceCertificateFromStore "CurrentUser", "TrustedPeople", "FindBySubjectName", "localhost"  
    
        'Set the Client Certificate.  
        monikerProxy.ChannelCredentials.SetClientCertificateFromStoreByName "CN=client.com", "CurrentUser", "My"  
        MsgBox monikerProxy.Add(3, 4)  
    
  7. Spusťte aplikaci Visual Basic a ověřte výsledky.

    Aplikace Jazyka Visual Basic zobrazí okno se zprávou s výsledkem volání Add(3, 4). SetClientCertificateFromFile(String, String, String) nebo SetClientCertificateFromStoreByName(String, String, String) lze použít také místo nastavení klientského SetClientCertificateFromStore(String, String, String, Object) certifikátu:

    monikerProxy.ChannelCredentials.SetClientCertificateFromFile "C:\MyClientCert.pfx", "password", "DefaultKeySet"  
    

Poznámka:

Aby toto volání fungovalo, musí být klientský certifikát důvěryhodný na počítači, na kterém je klient spuštěný.

Poznámka:

Pokud je moniker poškozený nebo pokud je služba nedostupná, volání GetObject vrátí chybu s informacemi o neplatné syntaxi. Pokud se zobrazí tato chyba, ujistěte se, že je název, který používáte, správný a že je služba dostupná.

Zadání uživatelského jména a hesla

  1. Upravte soubor Service App.config tak, aby používal soubor wsHttpBinding. To se vyžaduje pro ověření uživatelského jména a hesla:

  2. clientCredentialType Nastavte uživatelské jméno:

  3. Otevřete Visual Basic 6.0 a vytvořte nový soubor standardního .exe. Přidejte tlačítko do formuláře a poklikáním na tlačítko přidejte následující kód do obslužné rutiny Kliknutí:

    monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl"  
    monString = monString + ", address=http://localhost:8000/ServiceModelSamples/Service"  
    monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples"  
    monString = monString + ", binding=WSHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples"  
    
    Set monikerProxy = GetObject(monString)  
    
    monikerProxy.ChannelCredentials.SetServiceCertificateAuthentication "CurrentUser", "NoCheck", "PeerOrChainTrust"  
    monikerProxy.ChannelCredentials.SetUserNameCredential "username", "password"  
    
    MsgBox monikerProxy.Add(3, 4)  
    
  4. Spusťte aplikaci Visual Basic a ověřte výsledky. Aplikace Jazyka Visual Basic zobrazí okno se zprávou s výsledkem volání Add(3, 4).

    Poznámka:

    Vazba zadaná v monikeru služby v této ukázce byla změněna na WSHttpBinding_ICalculator. Všimněte si také, že je nutné zadat platné uživatelské jméno a heslo při volání SetUserNameCredential(String, String).

Zadání přihlašovacích údajů systému Windows

  1. Nastavte clientCredentialType na Windows v souboru Service App.config:

  2. Otevřete Visual Basic 6.0 a vytvořte nový soubor standardního .exe. Přidejte tlačítko do formuláře a poklikáním na tlačítko přidejte následující kód do obslužné rutiny Kliknutí:

    monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl"  
    monString = monString + ", address=http://localhost:8000/ServiceModelSamples/Service"  
    monString = monString + ", contract=ICalculator, contractNamespace=http://Microsoft.ServiceModel.Samples"  
    monString = monString + ", binding=WSHttpBinding_ICalculator, bindingNamespace=http://Microsoft.ServiceModel.Samples"  
    monString = monString + ", upnidentity=domain\userID"  
    
    Set monikerProxy = GetObject(monString)  
     monikerProxy.ChannelCredentials.SetWindowsCredential "domain", "userID", "password", 1, True  
    
    MsgBox monikerProxy.Add(3, 4)  
    
  3. Spusťte aplikaci Visual Basic a ověřte výsledky. Aplikace Jazyka Visual Basic zobrazí okno se zprávou s výsledkem volání Add(3, 4).

    Poznámka:

    Musíte nahradit "domain", "userID" a "password" platnými hodnotami.

Určení tokenu problému

  1. Tokeny problému se používají jenom pro aplikace používající federované zabezpečení. Další informace o federované zabezpečení najdete v tématu Federace a vystavené tokeny a ukázka federace.

    Následující příklad kódu jazyka Visual Basic ukazuje, jak volat metodu SetIssuedToken(String, String, String) :

        monString = "service:mexAddress=http://localhost:8000/ServiceModelSamples/Service?wsdl"  
        monString = monString + ", address=http://localhost:8000/SomeService/Service"  
        monString = monString + ", contract=ICalculator, contractNamespace=http://SomeService.Samples"  
        monString = monString + ", binding=WSHttpBinding_ISomeContract, bindingNamespace=http://SomeService.Samples"  
    
        Set monikerProxy = GetObject(monString)  
    monikerProxy.SetIssuedToken("http://somemachine/sts", "bindingType", "binding")  
    

    Další informace o parametrech pro tuto metodu naleznete v tématu SetIssuedToken(String, String, String).

Viz také