Microsoft UDDI SDK Version 3.0 Overview Contents Microsoft UDDI SDK Version 3.0 Overview .................................................................................... 3 1 Microsoft.Uddi3 Namespace ..................................................................................................... 3 2 Subscription API ....................................................................................................................... 3 3 Digital Signature API ................................................................................................................. 4 3.1 UddiSignatureGenerator class ....................................................................................... 5 3.2 UddiSignatureValidator class ......................................................................................... 6 4 Key and Key Partition Management ......................................................................................... 7 5 Ownership Transfer API ........................................................................................................... 7 6 Query Enhancements ............................................................................................................... 7 7 Basic Data Model Improvements .............................................................................................. 8 8 Common Questions and Answers ............................................................................................ 8 Resources .................................................................................................................................... 9 Copyright ...................................................................................................................................... 9 Microsoft UDDI SDK Version 3.0 Overview Microsoft® UDDI SDK Version 3.0 provides the APIs that conform to the UDDI v3 specification. It is included in Microsoft UDDI Services 3.0 that ships with Microsoft BizTalk® Server 2009. This document gives an overview of new major features in UDDI SDK Version 3.0 as compared to UDDI SDK Version 2.0. It is not meant to replace the online MSDN® references for this release of the SDK. For information about UDDI SDK Version 2.0, see the UDDI SDK home page (http://go.microsoft.com/fwlink/?LinkId=143126). 1 Microsoft.Uddi3 Namespace The UDDI SDK assembly, Microsoft.Uddi.dll, is located under the SDK directory after the SDK component is installed. To avoid potential namespace conflict with UDDI SDK Version 2.0, UDDI SDK Version 3.0 uses a different namespace, Microsoft.Uddi3. All classes in UDDI SDK Version 3.0 are contained in this namespace. The organization of this namespace is very similar to Microsoft.Uddi in UDDI SDK Version 2.0. The majority of classes in UDDI SDK Version 2.0 remain in UDDI SDK Version 3.0 with little or no change. 2 Subscription API Subscription API (http://go.microsoft.com/fwlink/?LinkID=143134) is a new feature added to UDDI v3. To support subscription, a new namespace, Microsoft.Uddi3.Subscriptions, was created. The following table provides descriptions for each class in that namespace. Class Description CoveragePeriod Specifies the coverage period when requesting a subscription result. KeyBag Represents the KeyBag element in a subscription result. KeyBagCollection Represents a collection of KeyBag objects. Subscription Represents the subscription data structure. SubscriptionCollection Represents a collection of subscriptions. SubscriptionFilter Represents the subscription filter specified in a subscription. The following classes were added to the Microsoft.Uddi3 namespace, each of which represents a subscription-related request to a UDDI v3 server. 3 Class Description SaveSubscription Represents a save_subscription request. DeleteSubscription Represents a delete_subscription request. GetSubscriptions Represents a get_subscriptions request. GetSubscriptionResults Represents a get_subscriptionResult request. 3 Digital Signature API We largely rely on the Microsoft .NET Framework for digital signature generation and validation because the UDDI digital signature specified in the UDDI v3 standard follows the same standard as XML-Signature Syntax and Processing (http://go.microsoft.com/fwlink/?LinkId=143135). For detailed XML signature syntax, algorithm, and processing rules, refer to the standard. The class diagram for the digital signature is shown below. UddiSignatureGenerator UddiSignatureValidator +Compute() : UddiSignature +Validate() : bool SignableMessage UddiSignature 1 BusinessEntity BusinessService BindingTemplate * TModel PublisherAssertion The UddiSignature class wraps a single XML digital signature and a reference to a signed UDDI message. UddiSignatureGenerator is a factory class for creating a UddiSignature for a SignableMessage. UddiSignatureValidator is responsible for validating a UddiSignature for a SignableMessage. SignableMessage is an abstract class that defines a common interface for supporting the signature in a UDDI message. The following signing scenarios are supported by UddiSignatureGenerator: 4 Signing with an RSA or DSA key pair and including key information with a <KeyInfo> element in the result message. Signing with an RSA or DSA key pair but not providing key information in the result message. Signing with an HMAC shared secret key. Signing with an X.509 certificate (with an RSA or DSA key pair) and providing public key information as well as certificate information in a <KeyInfo> element in the result message. You can also create your own signature generator and validator classes. The SignableMessage can also take the general XML signature, System.Security.Cryptography.Xml.Signature. 3.1 UddiSignatureGenerator class The detailed description of this class is provided in the following table. Public Constructors UddiSignatureGenerator(): Default constructor Public Properties List<System.Security.Cryptography.Xml.Transform> Transforms: The transforms to apply before computing the digest value. Default transforms include enveloped signature transform and SCC14n transform. The default value can be overridden by setting this parameter. Public Methods UddiSignature Compute(SignableMessage message, RSA rsaKey): Compute a signature for a UDDI message using an RSA key. The public key info will be included in the signature. UddiSignature Compute(SignableMessage message, DSA dsaKey): Compute a signature for a UDDI message using a DSA key. The public key info will be included in the signature. UddiSignature Compute(SignableMessage message, HMAC hmacKey): Compute a signature for a UDDI message using a shared secret HMAC key. UddiSignature Compute(SignableMessage message, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate): Compute a signature for a UDDI message using an X509 v3 certificate. The certificate must have a private key. The public key info and the raw certificate data (excluding the private key) will be included in the signature. 5 UddiSignature Compute(SignableMessage message, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate, CertificateDataChoice choice): Compute a signature for a UDDI message using an X509 v3 certificate. The certificate must have a private key. The public key info will be included in the signature. The third parameter can be used to define what kinds of certificate info to be included in the signature. 3.2 UddiSignatureValidator class The detailed description of this class is provided in the following table. Public Constructors UddiSignatureValidator(): Default constructor Public Properties StoreLocation X509StoreLocation: X509 store location for searching a certificate as well as for verification. Default to “CurrentUser”. StoreName X509StoreName: X509 certificate store for searching a certificate by certain attributes. Default to “AddressBook”. X509ChainPolicy X509ChainPolicy: X509 chain policy used when building a certification chain for validation. Default to the .NET default chain policy. Public Methods bool Validate(UddiSignature signature, RSA rsaKey): Validate signature value using a shared RSA key. The key info including certificate present in the message will be ignored. bool Validate(UddiSignature signature, DSA dsaKey): Validate signature value using a shared DSA key. The key info including certificate present in the message will be ignored. bool Validate(UddiSignature signature, HMAC hmacKey): Validate signature value using a shared secret HMAC key. bool Validate(UddiSignature signature, System.Security.Cryptography.X509Certificates.X509Certificate2 certificate): Validate signature value using a shared X509 certificate. The key info including certificate present in the message will be ignored. 6 bool Validate(UddiSignature signature, bool verifyKeyInfo): Validate signature value and conditionally key info as well based on self-contained info and Windows X.509 certificate store. 4 Key and Key Partition Management Publisher assigned key and domain-based key partition (http://go.microsoft.com/fwlink/?LinkId=143136) is a new feature added to UDDI v3. In this SDK release we added a new namespace, Microsoft.Uddi3.UddiKeys. There are three classes in this namespace. Class Description KeyPartition Represents a key partition and provides an interface for key partition management. PartitionStatusInfo Contains the operational information of a key partition, such as the owner, created timestamp, etc. UddiKeyUtility Contains utility functions that can operate on a UDDI v3 key. 5 Ownership Transfer API Ownership transfer is a new API added to UDDI v3 that enables ownership transfer of a BusinessEntity or tModel between peer publishers. The following classes provide the API to perform ownership transfer. Class Description GetTransferToken Represents a get_transferToken request. TransferEntities Represents a transfer_entities request. DiscardTransferToken Represents a discard_transferToken request. Microsoft.Uddi3.Ownership.TransferToken Represents a transfer token. 6 Query Enhancements The following updates were made in the SDK to cover query enhancements in the UDDI v3 standard: 7 UDDI v3 supports nested find_tModel and find_relatedBusinesses queries. Correspondingly, a public property FindTModel was added to the FindBusiness, FindService, and FindBinding classes and a public property FindRelatedBusinesses was added to FindBusiness. A new class, ListDescription, was added to represent the listDescription element in the find query response, which provides paging capability through large result sets. The find qualifier set defined in the FindQualifier class was expanded with the new find qualifiers defined in the UDDI v3 standard. 7 Basic Data Model Improvements A few changes were made in the basic data model to stay consistent with the UDDI v3 standard. The changes are summarized as follows: OperationalInfo is a new data structure added in UDDI v3. Three classes were added in this release of the SDK under Microsoft.Uddi3.OperationalInfo: OperationalInfo, OperationalInfoCollection, and GetOperationalInfo. GetOperationalInfo corresponds to the get_operationalInfo message. A new OverviewDocCollection class was added to support multiple OverviewDoc in Microsoft.Uddi3.TModels.TModel and Microsoft.Uddi3.TModels.InstanceDetails. Three new classes were introduced to meet the need to support complex categorization: CategoryBag, KeyedReferenceGroup, and KeyedReferenceGroupCollection. A UseType class was added that contains a set of predefined use types for AccessPoint and OverviewUrl. 8 Common Questions and Answers Q: We’re using UDDI SDK Version 2.0 in our applications. Are we required to use UDDI SDK Version 3.0 if we upgrade the UDDI server to 3.0? A: No. UDDI Services 3.0 is fully backward compatible with the UDDI v2 standard. Q: We’re using UDDI SDK Version 2.0 in our application. What’s the guidance to migrate the application to use UDDI SDK Version 3.0? A: Migrating an application from using UDDI SDK v2.0 to using UDDI SDK v3.0 does require modification of the application. However, since the architecture and the overall design remains consistent from v2 to v3, the migration in general should not incur significant code changes. The general guidance is as follows: 1. Open the application. Change the reference to the UDDI SDK v3.0 assembly. Refactor the code to rename all references to the Microsoft.Uddi namespace to Microsoft.Uddi3. 2. Compile the application. Resolve any errors that result from the incompatible changes from v2 to v3. Address any warnings appropriately. 8 3. Modify the application to leverage the new features in UDDI v3. 4. Follow the engineering process in your organization to test and re-release the application. Resources The samples that come with UDDI SDK Version 3.0 are great resources for developers. MSDN home page for UDDI SDK Version 2.0 (http://go.microsoft.com/fwlink/?LinkId=143126) Microsoft UDDI Services 3.0 Web site (http://go.microsoft.com/fwlink/?LinkId=148666) UDDI specifications (http://go.microsoft.com/fwlink/?LinkID=132109) Copyright Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted in examples herein are fictitious. No association with any real company, organization, product, domain name, e-mail address, logo, person, place, or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation. Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property. © 2009 Microsoft Corporation. All rights reserved. Microsoft, BizTalk, and MSDN are trademarks of the Microsoft group of companies. All other trademarks are property of their respective owners. 9