Microsoft UDDI SDK Version 3.0 Overview

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