Aracılığıyla paylaş


WS 2007 Federasyon HTTP Bağlaması

WS2007FederationHttp örneği, WS-Trust belirtiminin WS2007FederationHttpBinding1.3 sürümünü destekleyen federasyon senaryoları oluşturmak için kullanabileceğiniz standart bağlamanın kullanımını gösterir.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Örnek, konsol tabanlı bir istemci programı (Client.exe), konsol tabanlı bir güvenlik belirteci hizmet programı (Securitytokenservice.exe) ve konsol tabanlı hizmet programından (Service.exe) oluşur. Hizmet, istek/yanıt iletişim desenini tanımlayan bir sözleşme uygular. Sözleşme, matematik işlemlerini (ICalculator, Add, Subtract ve Multiply) kullanıma sunan Divide arabirimi tarafından tanımlanır. İstemci, Güvenlik Belirteci Hizmeti'nden (STS) bir güvenlik belirteci alır ve belirli bir matematik işlemi için hizmete zaman uyumlu isteklerde bulunur. Hizmet daha sonra sonuçla yanıt verir. İstemci etkinliği konsol penceresinde görünür.

Örnek, ICalculator sözleşmesini ws2007FederationHttpBinding öğesini kullanarak kullanılabilir hale getirir. İstemcide bu bağlamanın yapılandırması aşağıdaki kodda gösterilir:

<bindings>
  <ws2007FederationHttpBinding>
    <binding name="ServiceFed" >
      <security mode ="Message">
        <message issuedKeyType ="SymmetricKey"
                 issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
          <!-- Endpoint address and binding for Security Token Service -->
          <issuer address ="http://localhost:8000/sts/windows"
                  binding ="ws2007HttpBinding" />
        </message>
      </security>
    </binding>
  </ws2007FederationHttpBinding>
</bindings>

Güvenlikte<>security, değeri hangi güvenlik modunun kullanılması gerektiğini belirtir. Bu örnekte güvenlik message kullanılır ve bu nedenle <ileti><güvenlik> içinde belirtilir. İletinin<> içindeki veren< öğesi, istemcinin hizmette kimlik doğrulaması görebilmesi için istemciye bir güvenlik belirteci veren STS'nin adresini ve bağlamasını belirtir.>ICalculator

Bu bağlamanın hizmetteki yapılandırması aşağıdaki kodda gösterilir:

<bindings>
  <ws2007FederationHttpBinding>
    <binding name="ServiceFed" >
      <security mode ="Message">
        <message issuedKeyType ="SymmetricKey"
                 issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
          <!-- Metadata address for Security Token Service -->
          <issuerMetadata address ="http://localhost:8000/sts/mex" >
            <identity>
              <certificateReference storeLocation ="CurrentUser"
                                    storeName="TrustedPeople"
                                    x509FindType ="FindBySubjectDistinguishedName"
                                    findValue ="CN=STS" />
            </identity>
          </issuerMetadata>
        </message>
      </security>
    </binding>
  </ws2007FederationHttpBinding>
</bindings>

Güvenlikte<>security, değeri hangi güvenlik modunun kullanılması gerektiğini belirtir. Bu örnekte güvenlik message kullanılır ve bu nedenle <ileti><güvenlik> içinde belirtilir. İletinin<>ws2007FederationHttpBinding öğesi<, STS için meta verileri almak için kullanılabilecek bir uç noktanın adresini ve kimliğini belirtir.

Hizmetin davranışı aşağıdaki kodda gösterilir:

<behaviors>
  <serviceBehaviors>
    <behavior name ="ServiceBehaviour" >
      <serviceDebug includeExceptionDetailInFaults ="true"/>
      <serviceMetadata httpGetEnabled ="true"/>
      <serviceCredentials>
        <issuedTokenAuthentication>
          <knownCertificates>
            <add storeLocation ="LocalMachine"
                 storeName="TrustedPeople"
                 x509FindType="FindBySubjectDistinguishedName"
                 findValue="CN=STS" />
          </knownCertificates>
        </issuedTokenAuthentication>
        <serviceCertificate storeLocation ="LocalMachine"
                            storeName ="My"
                            x509FindType ="FindBySubjectDistinguishedName"
                            findValue ="CN=localhost"/>
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>

<issuedTokenAuthentication>>, hizmetin istemcilerin kimlik doğrulaması sırasında sunmasına izin verdiği belirteçlerde kısıtlamalar belirtmesine olanak tanır. Konu adı CN=STS olan bir sertifika ile imzalanmış belirteçlerin hizmet tarafından kabul edildiğini belirten bu yapılandırmadır.

STS, standart WS2007HttpBindingkullanılarak tek bir uç noktanın kullanılabilir olmasını sağlar. Hizmet, tokenlar için istemcilerden gelen taleplere yanıt verir. İstemcinin kimliği bir Windows hesabı kullanılarak doğrulanırsa hizmet, istemcinin kullanıcı adını talep olarak içeren bir belirteç oluşturur. Belirteci oluşturmanın bir parçası olarak STS, CN=STS sertifikasıyla ilişkili özel anahtarı kullanarak belirteci imzalar. Buna ek olarak, bir simetrik anahtar oluşturur ve CN=localhost sertifikasıyla ilişkili ortak anahtarı kullanarak şifreler. Belirteci istemciye döndürürken, STS simetrik anahtarı da döndürür. İstemci, verilen belirteci ICalculator hizmete sunar ve iletiyi bu anahtarla imzalayarak simetrik anahtarı bildiğini kanıtlar.

Örneği çalıştırdığınızda, güvenlik belirteci isteği STS konsol penceresinde gösterilir. İşlemin istekleri ve yanıtları istemci ve hizmet konsolu pencerelerinde görüntülenir. Uygulamayı kapatmak için konsol pencerelerinden herhangi birinde ENTER tuşuna basın.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.

Bu örnekte yer alan Setup.bat dosyası, sunucuyu ve STS'yi şirket içinde barındırılan bir uygulamayı çalıştırmak için ilgili sertifikalarla yapılandırmanıza olanak tanır. Toplu iş dosyası LocalMachine/TrustedPeople sertifika deposunda iki sertifika oluşturur. İlk sertifikanın konu adı CN=STS'dir ve STS tarafından istemciye verdiği güvenlik belirteçlerini imzalamak için kullanılır. İkinci sertifika, CN=localhost konu adına sahiptir ve STS tarafından hizmetin şifresini çözebileceği şekilde bir anahtarı şifrelemek için kullanılır.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Visual Studio için yönetici ayrıcalıklarıyla bir Geliştirici Komut İstemi açın ve gerekli sertifikaları oluşturmak için Setup.bat dosyasını çalıştırın.

Bu toplu iş dosyası, Windows SDK ile dağıtılanCertmgr.exeve Makecert.exe'i kullanır. Ancak, betiğin bu araçları bulmasını sağlamak için visual studio komut isteminde Setup.bat çalıştırmanız gerekir.

  1. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  2. Örneği tek veya bilgisayarlar arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin. Windows Vista kullanıyorsanız, Service.exe, Client.exeve yükseltilmiş ayrıcalıklarla SecurityTokenService.exe çalıştırmanız gerekir (dosyalara sağ tıklayın ve ardından Yönetici olarak çalıştır'a tıklayın).