Novell Virtual Directory Services Developer Hands-On

Tim Larsen

Software Engineer,

Identity Provider Services Engineering

Novell, Inc.

Girish Kumar

Software Engineer,

Identity Infrastructure – IDC

Novell, Inc

Roger Harrison

Senior Manager,

Identity Provider Services Engineering

Novell, Inc.

Novell Virtual Directory Services Overview

Use Case One

You have an opportunity to sell your directory-enabled application into a single department at a Fortune 500 company that is already using eDirectory™ as its corporate directory.

Problem: Extending the schema for your application in the corporate tree requires corporate-level approval. Furthermore, your application adds attributes to the User object, and corporate IS&T is complaining about it. This has already delayed the sale by two months, and it looks like it will be at least two more months before approval is obtained to deploy the application for this department.

Use Case Two

You want to sell your directory-enabled application into Active Directory shops.

Problem: Customers in these shops are already using Active Directory and don’t want to deploy eDirectory. To make matters worse, you’ll also require them to install DirXML® drivers between Active Directory and eDirectory to make the application work. Potential customers are asking why your application cannot just use the identities in Active Directory for authentication and authorization decisions without having to install a meta-directory product to bring your product's data and the user identities into a single directory.

Use Case Three

Your product manager tells you that your directory-enabled application has to provide policy and authorization decisions for users and other identities stored in all of the following corporate directories: eDirectory, Sun Java System Directory Server, and Active Directory.

Problem: Your application also needs a place to store its own configuration and policy information. The directory seems like a perfect place to store it, but the application won’t be widely adopted unless it works without making any updates to the corporate directory.

Novell Virtual Directory Services

Gives your application

Its own directory-style private data store

Ability to store some identity attributes locally while connecting to an existing corporate directory for authentication and authorization

Ability to support multiple identity stores

Novell eDirectory™

Microsoft Active Directory

Sun Java System Directory Server

Allows your customers to

Focus on your application's core value proposition

Avoid political and technical deployment hurdles

Private Directory Vision

Give applications a private data store that offers the power, flexibility, and features of a directory service without requiring installation of a corporate directory or updates to that directory’s schema, etc.

Identity Integration Vision

Give applications the ability to seamlessly integrate with a customer's corporate directory infrastructure and the information—typically identity information—it stores.

Management Vision

Application vendors have the freedom of choice on how their applications will be managed. All management tools are exposed natively via Novell's management framework or through API's that enable vendors to write their own.

Customer Usage Vision

Customer installs, configures, manages, uses, and even uninstalls an application that embeds NVDS and never sees NVDS

NVDS

Novell Virtual Directory Services Architecture

Service

Registry

Common

Directory Agent

Local

Directory

Agent

Other

Chaining

Agents

LDAP

Chaining

Agent

Foundation

Services

Authorization &

Authentication

Services

Other

Protocol

Handlers

SOAP

Protocol

Handlers

LDAP

Protocol

Handler

Local Store

Hands-On

Hands-on Tasks

What we will do

Install NVDS in standalone mode

Learn debugging tools and practice

Learn about the schema model of NVDS

Configure our installed NVDS by adding schema and users and by configuring identity integration

Create a simple application that allows identities to exist remotely while having local data

Create a simple GUI for a SOAP operation using the Web Services SDK

Embed NVDS for your own application

Installing Novell Virtual Directory Services

Installing Novell Virtual Directory Services

NVDS Installers

Embeddable installers

Are silent

Are intended to be used to embed the install of NVDS in your own application's install

Developer Edition Install

Is not silent

Is intended to be used by developers who want to use NVDS for development and debugging purposes

NVDS Embeddable Installers

The Linux installer is based on RPM

RPMs are single-instance per machine

The NVDS RPMs are repackaged for each instance

The file system path is changed to include the instance

The RPM name is changed to include the instance

Other platforms are based on Install Anywhere

Executable installer

Merge module

Installing Novell Virtual Directory Services

NVDS Developer Edition Install

Embeds the platform-specific installers for NVDS in an Install Anywhere GUI installer

On Linux, it repackages the RPMs on the fly

Includes an option for installing iManager

Includes options for installing schema configurations

LDAPv3 schema

X.500 schema

eDirectory-like schema

Sample schema and users

Installing Novell Virtual Directory Services

Exercise 1: Install NVDS

Detailed instructions are available in the Developer Guide

The prerequisite RPMs are already installed

The Linux developer install is on the lab machines at:

/home/developer/nvds/novell-nvds_de.bin

The root password is “novell” (for step 5)

Choose “Minimal” as the install set or deselect everything except NVDS (step 8)

If you feel the need to change any of the other defaults, remember your choices for later

Installing Novell Virtual Directory Services

Useful Tools

Useful Tools

XTrace Console

Replaces dstrace

Runs in a separate process from NVDS

Can be executed remotely or locally

Remote XTrace uses SOAP APIs

Local XTrace is available in debug builds

Events are registered dynamically as modules are loaded

nothing is hard-coded

Useful Tools

XTrace Console: 32-bit Error Codes

First 4 bits are Severity (0=informational, 8=error)

Next 12 bits are Facility (Identifies the module that reported the error)

Last 16 bits are Error codes

Values below 0x0100 are common error codes

Other values are module-specific codes

0x81140005: 8=error, 114=LPH, 0005=Invalid parameter

0x01060100: 0=information, 106=DS, 0100=Referral

Useful Tools

Novell Import Convert Export (ICE)

Provides a command line and scriptable way to modify the DIB

Add, modify and delete entries (including schema) using LDIF

Export entries to LDIF

Installed as part of NVDS

Used by the Developer Edition install to extend the schema

Useful Tools

LDAP Extended Error Information

The LDAP Protocol Handler (LPH) can be configured to always return extended error information

set the LDAPReturnDebugInfo parameter

Individual LDAP operations can request extended error information

attach the returnDebugInfo control to an operation

Full details are in the Developer Guide

Useful Tools

iManager

Provides plug-ins for object creation, deletion, and modification

for well-known classes (users, groups, ...)

for generic objects

Provides system management and maintenance plug-ins

Configuration

Backup/Restore

Check/Repair

Certificate provisioning and management

Useful Tools

iManager

Provides diagnostics and statistics

DIB browse

Schema browse

Trace

System stats and info

Modules with their associated services & events

Scheduler stats

Useful Tools

WSSDK

Provides a command-line or scriptable way to perform maintenance and configuration tasks

Interactive mode (wsclient -i)

Batch mode

Renders Dynamic Management Interface (DMI) files to determine how to gather the inputs and how to display the output

Provides Java classes and methods so that you can easily create your own dynamic interfaces for SOAP operations

Novell Virtual Directory Services Schema Overview

Novell Virtual Directory Services Schema Overview

Important NVDS schema concepts

Only meta-schema and operational schema are installed by default

Schema is only extended with needed definitions

All schema definitions in NVDS are normal objects

eDirectory restrictions on schema no longer apply

Unlike eDirectory, where they were stored on the object class definition, containment and naming constraints are now separate objects

NVDS Schema Objects

There are several types of schema objects, all of which are extensible

Syntaxes

Attributes

Object Classes

Name Forms

Structure Rules

Novell Virtual Directory Services Schema Overview

Schema syntaxes

Can inherit from other syntaxes

Use matching rules (case ignore, whitespace)

If several attributes need the same restrictions, it may be simpler to define a new syntax

Schema attributes

Can inherit from syntaxes or other attributes

Can use the same restrictions as syntaxes can

Novell Virtual Directory Services Schema Overview

Complex syntaxes

Encoded using Generic String Encoding Rules (GSER)

Have several fields

each field has a name and a value

For example:

{ ID 2559, year 2005 }

{ type 1, dn “cn=admin,dc=acme,dc=com” }

Full details are in the Schema Reference

Novell Virtual Directory Services Schema Overview

Schema object classes

Can inherit from other object class definitions

Can be one of four types:

Structural

Abstract

Auxiliary

DSE

Novell Virtual Directory Services Schema Overview

Structural Object Classes

Can be instantiated

Abstract Object Classes

Cannot be instantiated

Used to define other object classes

Novell Virtual Directory Services Schema Overview

Auxiliary Object Classes

Dynamic classes that can be added to objects in the directory.

Structural object class definitions must explicitly specify that an auxiliary class can be added

DSE Object Classes

A special form of auxiliary classes that tell the directory how to interact with the object

Novell Virtual Directory Services Schema Overview

Schema Name Forms

Specify how object classes can be named

Associated with structural object classes

Schema Structure Rules

Specify how object classes can be contained

Associated with name forms

Novell Virtual Directory Services Schema Overview

locality

organization

locality

others...

locality

locality

localitySR

localitySR2

localitySR3

localitySR4

Setting a maximum containment nesting depth

define localitySR

allows locality wherever makes sense

define localitySR2

allows locality under localitySR

define localitySR3

allows locality under localitySR2

define localitySR4

allows locality under localitySR3

Novell Virtual Directory Services Schema Overview

Make containment dependent on naming attributes

Allow user objects to exist in different containers based on their naming attributes. (i.e. cn goes under ou, uid goes under dc)

person has two name forms:

userCnNameForm

userUidNameForm

Each name form has an associated structure rule

ou=users

cn=bjones

user CnSR

dc=people

uid=john

user UidSR

parent object

Novell Virtual Directory Services Schema Overview

Verifying the Installation of Novell Virtual Directory Services

Verifying the Installation of Novell Virtual Directory Services

Exercise 2: Verify the Install

Verify that NVDS is up and running

Check for the cshost (Common Services Host) process

Check LDAP connectivity using ICE

Check SOAP connectivity using a web browser

You may use the link on the desktop

Detailed instructions are available in the Developer Guide

Configuring Novell Virtual Directory Services

Configuring Novell Virtual Directory Services

Initial Configuration

After the install, there are no real objects

The schema has only functional and meta-schema

Root DSE

Schema

admin

area

Other

admin

areas

Basic Configuration Tasks in sampleuser.ldif

Extend the Schema

samplePerson and sampleDomain

Create a Naming Context

dc=acme,dc=com

Create other Administrative Points

Create a System Administrator

cn=admin,dc=acme,dc=com

Configuring Novell Virtual Directory Services

Extend the Schema

Add schema definitions to the schema admin area

There are still no real objects in the directory

Root DSE

Schema

admin

area

Other

admin

areas

Configuring Novell Virtual Directory Services

Create a Naming Context

Create dc=acme,dc=com

Make it real by making it a naming context

Root DSE

Schema

admin

area

Other

admin

areas

Configuring Novell Virtual Directory Services

Create a Naming Context

Create dc=acme,dc=com

Make it real by making it a naming context

Root DSE

Schema

admin

area

Other

admin

areas

dc=com

Configuring Novell Virtual Directory Services

Create a Naming Context

Create dc=acme,dc=com

Make it real by making it a naming context

Root DSE

Schema

admin

area

Other

admin

areas

dc=com

dc=acme

Configuring Novell Virtual Directory Services

Create Other Administrative Points

Set dc=acme,dc=com as an administrative point

Root DSE

Schema

admin

area

Other

admin

areas

dc=com

dc=acme

Configuring Novell Virtual Directory Services

Create Other Administrative Points

Set dc=acme,dc=com as an administrative point

Root DSE

Schema

admin

area

Other

admin

areas

dc=com

dc=acme

Configuring Novell Virtual Directory Services

Create Other Administrative Points

Set dc=acme,dc=com as an administrative point

Root DSE

dc=com

dc=acme

Schema

admin

area

Other

admin

areas

Configuring Novell Virtual Directory Services

Create Other Administrative Points

Set dc=acme,dc=com as an administrative point

Root DSE

dc=com

dc=acme

Schema

admin

area

Other

admin

areas

Configuring Novell Virtual Directory Services

Create a System Administrator

Add the admin user and any other objects

Root DSE

dc=com

dc=acme

Schema

admin

area

Other

admin

areas

dc=admin

Configuring Novell Virtual Directory Services

Create a System Administrator

Add the admin user and any other objects

Root DSE

dc=com

dc=acme

Schema

admin

area

Other

admin

areas

dc=admin

Configuring Novell Virtual Directory Services

Exercise 3: Configure NVDS

Use ICE to import sampleuser.ldif

There is a script to make running ICE easier at

/home/developer/nvds/ldifimport

The LDIF file is at

/home/developer/nvds/sampleuser.ldif

Import it by using the following commands:

cd /home/developer/nvds

./ldifimport sampleuser.ldif

Details about the contents of sampleuser.ldif are in the Developer Guide

Configuring Novell Virtual Directory Services

Exercise 4: Verify Configuration

Launch an LDAP Browser to see the real directory objects

Click on the LDAP Browser icon on the desktop

Choose “Exercise 4” as the profile and press “Connect”

Connects to the localhost (127.0.0.1) on port 389

Authenticates as cn=admin,dc=acme,dc=com

Password is “novell”

If you are curious, click on “Edit” before pressing “Connect” to view the connection settings

Configuring Novell Virtual Directory Services

Encrypted Attributes

Are stored in the database in an encrypted format

The attributes we defined are not encrypted

You will probably want “userPassword” and other attributes encrypted in a secure system

Adding the following values to an attribute definition will make it encrypted:

encryptionScheme: aesEncryption

encryptionLock: true

See the Developer Guide for full details

Configuring Novell Virtual Directory Services

Identity Integration

Identity Integration

Identity Integration Tasks in chaining.ldif

Extend the Schema with functional schema

ref attribute

subrDSE and xrDSE dseObjectClasses

Create dc=ext,dc=acme,dc=com

Set its dseObjectClass to “subrDSE”

Use the “ref” attribute to point it at

ldap://otherserver:389/ou=users,o=acme

Identity Integration

Configure Identity Integration

Create dc=ext,dc=acme,dc=com

Set it to refer to the external directory

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Identity Integration

Configure Identity Integration

Create dc=ext,dc=acme,dc=com

Set it to refer to the external directory

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Identity Integration

Configure Identity Integration

Create dc=ext,dc=acme,dc=com

Set it to refer to the external directory

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Identity Integration

Search Example

Search for cn=jane,dc=ext,dc=acme,dc=com

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Identity Integration

Search Example

Search for cn=jane,dc=ext,dc=acme,dc=com

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

cn=jane

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Identity Integration

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Search Example

Search for cn=jane,dc=ext,dc=acme,dc=com

Identity Integration

Search Example

Search for cn=jane,dc=ext,dc=acme,dc=com

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

otherserver:389

o=acme

ou=users

cn=john

cn=jane

found!

Identity Integration

Exercise 5: Configure Identity Integration

The identity integration point is defined in

/home/developer/nvds/chaining.ldif

It refers to a server running Active Directory

To import chaining.ldif, run the following commands:

cd /home/developer/nvds

./ldifimport chaining.ldif

More details about Identity Integration are available in the Technical Overview and the Developer Guide

Identity Integration

Exercise 6: Verify Identity Integration

6a. Start the XTrace Console

cd /var/opt/novell/dev/cshost/bin

./TraceConsole.sh &

Go to the Filters tab, press “Select All”, then “Apply”

Go to the Messages tab, press “Start Trace”

6b. Bind and Search for cn=john,dc=ext,dc=acme,dc=com

Click on the LDAP Browser icon on the desktop

Choose the session “Exercise 6b” and press “Connect”

The identity integration worked if you can click on and read the attributes from “cn=john,dc=ext,dc=acme,dc=com”

Click “Stop Trace” on the XTrace Console and review the messages to see how the operations flowed through NVDS

Identity Integration

Schema Mapping

Different servers may have different names for the same attribute or object class

e.g. “address” on one server, “postalAddress” on another server

NVDS can be configured such that the application developer can just ask for “address” and get the correct values from both servers

This is done through a schema mapping file

Details are in the Developer Guide

Example One

Example One

An LDAP implementation of “object joining” for NVDS

This application will demonstrate how to store local information in NVDS for remote users

This solves some important deployment problems:

Not allowed to change the corporate directory

Allowed to change the corporate directory, but not allowed to extend its schema

Example One

An LDAP implementation of “object joining” for NVDS

Our application's attribute will be “favoriteFood”

It will, as its name suggests, store a string that tells us what the user's favorite food is

If the “favoriteFood” attribute already exists on a remote user we will use it, but if not we will create a local shadow object and set the value there

Example One

How it works with local users

Login as cn=admin,dc=acme,dc=com, set favoriteFood to “Pizza”

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Example One

How it works with local users

Login as cn=admin,dc=acme,dc=com, set favoriteFood to “Pizza”

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

dc=ext

otherserver:389

o=acme

ou=users

cn=john

cn=jane

cn=admin doesn't have

a value for favoriteFood

yet, so we set one

Example One

How it works with local users

Login as cn=admin,dc=acme,dc=com, set favoriteFood to “Pizza”

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Root DSE

dc=com

dc=acme

Admin

areas

cn=admin

Pizza

dc=ext

cn=admin doesn't have

a value for favoriteFood

yet, so we set one

Example One

How it works with local users

Login as cn=admin,dc=acme,dc=com, set favoriteFood to “Pizza”

Root DSE

dc=com

dc=acme

Admin

areas

dc=ext

cn=admin

Pizza

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Example One

How it works with remote users

Login as cn=jane,dc=ext,dc=acme,dc=com, set favoriteFood to “Oranges”

Root DSE

dc=com

dc=acme

Admin

areas

dc=ext

cn=admin

Pizza

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Example One

How it works with remote users

Login as cn=jane,dc=ext,dc=acme,dc=com, set favoriteFood to “Oranges”

Root DSE

dc=com

dc=acme

Admin

areas

dc=ext

cn=admin

Pizza

otherserver:389

o=acme

ou=users

cn=john

cn=jane

cn=jane doesn't have

a value for favoriteFood

so we set one

Example One

How it works with remote users

Login as cn=jane,dc=ext,dc=acme,dc=com, set favoriteFood to “Oranges”

Root DSE

dc=com

dc=acme

Admin

areas

dc=ext

cn=admin

Pizza

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Oranges

cn=jane doesn't have

a value for favoriteFood

so we set one...but the

schema doesn't allow it!

Example One

How it works with remote users

Root DSE

dc=com

dc=acme

Admin

areas

dc=ext

cn=admin

Pizza

cn=jane

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Create a local “glue”

object for cn=jane and

add the attribute there

Example One

How it works with remote users

Root DSE

dc=com

dc=acme

Admin

areas

dc=ext

cn=admin

Pizza

cn=jane

Oranges

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Create a local “glue”

object for cn=jane and

add the attribute there

Example One

How it works with remote users

Root DSE

dc=com

dc=acme

Admin

areas

dc=ext

cn=admin

Pizza

cn=jane

Oranges

otherserver:389

o=acme

ou=users

cn=john

cn=jane

Example One

Exercise 7: Setting Up for Example One

The favoriteFood attribute needs to be created and added to the definition of sampleUser:

cd /home/developer/nvds

./ldifimport extraschema.ldif

The identity integration point has already been configured and tested

Example One

Building and Running Example One

The application code skeleton is available in

/home/developer/nvds/objectjoin/

To make the code, type “make”

To run the application, type “./run”

Example One

Source Code for Example One

There are three Java source files:

ObjectJoinDemo.java

LoginView.java

MessageView.java

The one that performs the object join logic is MessageView.java

Example One

LDAP SDK: Pertinent Classes

LDAPConnection

read(), getConstraints(), setConstraints()

LDAPSearchConstraints

setControls()

LDAPControl

Javadocs are available from a shortcut on the desktop

LDAP

Example One

LDAP SDK: LDAPConnection

read() - two versions we will use

read(String dn, String[] attrs)

read(dn, attrs, LDAPSearchConstraints constraints)

setConstraints(LDAPConstraints constraints)

getConstraints()

LDAP

Example One

LDAP SDK: LDAPSearchConstraints

setControls(LDAPControl control)

LDAP SDK: LDAPControl

constructor

LDAPControl(String oid, boolean criticality, byte[] values)

LDAP

Example One

Exercise 8: Object Join Example

Finish the object join code in MessageView.java

Unfinished code is marked “//FINISHME: ”

A link to the needed Javadocs is on the desktop

You can open MessageView.java with kwrite (a text editor) by using the shortcut on the desktop

A working version of MessageView.java is available in

/home/developer/nvds/objectjoin/solution/

Build by typing “make”, run by typing “./run”

Try it by logging in repeatedly as cn=admin,dc=acme,dc=com and cn=john,dc=ext,dc=acme,dc=com

Example Two

Example Two

A simple dynamic GUI for an arbitrary SOAP operation

Uses the Web Services SDK (WSSDK) to render a Swing interface based on Dynamic Management Interface (DMI) files

Shows a simple way to programmatically invoke NVDS maintenance and configuration operations

Note: the WSSDK provides other ways to invoke these operations. See the Web Services Reference for details

Example Two

WSDL Tools Procedure

Acquire a Web Services Description Language (WSDL) file

Generate code stubs for the web service

for .NET, use wsdl.exe

for Java, use wsdl2java

Add calls to the generated code in your application

Example Two

Potential Problems with WSDL Tools and NVDS

Inflexible

Pointing at a different server requires modifications to the generated code

If the interface (WSDL) for the operation changes, the code must be regenerated and recompiled

Repetitive

Each operation needs code stubs generated

Example Two

The Web Services SDK for NVDS (WSSDK)

Gathers information about available web services using Web Services Inspection Language (WSIL) and WSDL

The list of operations is based on user rights

The WSDL files are dynamically generated

Renders user interfaces from DMI files

Command line

HTML

Swing

Example Two

Advantages of the Web Services SDK

Flexible

Changes to operation interfaces do not require client-side code changes

Clients can easily be made to point to different servers

Interfaces for multiple operations can be easily created

Example Two

A simple dynamic GUI for an arbitrary SOAP operation

The application will ask the user to login, and then present him or her with a choice of three operations:

Check/Repair

Backup

Restore

Example Two

A simple dynamic GUI for an arbitrary SOAP operation

Upon choosing an operation, the user will be presented with a dynamically-generated Swing UI for the selected operation, based on its DMI

Required options are in red text

Some options are enabled or disabled when other options are selected

Example Two

Building and Running Example Two

The application code skeleton is available in

/home/developer/nvds/dmigui/

To make the code, type “make”

To run the application, type “./run”

Example Two

Source Code for Example Two

There are three Java source files:

DMIGuiDemo.java

LoginView.java

OperationView.java

The one that creates the interfaces for the operations is OperationView.java

Example Two

Exercise 9: Dynamic SOAP Operation GUI

Finish the incomplete code in OperationView.java

Unfinished code is marked “//FINISHME: ”

A working version of OperationView.java is available in

/home/developer/nvds/dmigui/solution/

Build by typing “make”, run by typing “./run”

Log in as cn=admin,dc=acme,dc=com

The quickest operation to try is “Backup”

Embedding Novell Virtual Directory Services

Embedding Novell Virtual Directory Services

Embedding the installer on Linux

The NVDS installer for Linux is based on RPM

RPMs can only be installed once per machine

In order to get around this limitation, the NVDS installer for Linux “repackages” the RPMs for each instance name

Parameters are passed to the silent install script using a java-style .properties file

Exercise 10: Repackaging the RPMs

The NVDS Linux installer is already available at

/home/developer/nvds/embed/nvds_lxx86.tar.gz

Run the following commands to repackage the RPMs:

cd /home/developer/nvds/embed/

tar -xzvf nvds_lxx86.tar.gz

./embedrpms --basename <instance>

<instance> is a unique instance identifier and will be used in the repackaged RPM names

Output will be in the ./installers/ directory

For more details, see the Developer Guide

Embedding Novell Virtual Directory Services

Using the Repackaged RPMs

in ./installers/ you will find:

<instance>-nvds_lxx86.tar.gz

all of the contents of <instance>-nvds_lxx86.tar.gz

You should use one or the other

Invoke the repackaged installer by running:

./<instance>-nvds_lxx86.sh [installer.properties]

If the optional parameter is not specified, the script looks for a file called “installer.properties” in ./

Embedding Novell Virtual Directory Services

Passing Parameters to the Repackaged Installer

In order to install your repackaged NVDS silently, you should create a .properties file that looks something like the following:

DS_UNIQUE_INSTANCE_NAME=<instance>

DS_LDAP_PORT=389

DS_LDAP_PORT_SSL=636

DS_SOAP_PORT=8022

If a required parameter is not provided, the NVDS install script will prompt the user to get it

Full details are in the Developer Guide

Embedding Novell Virtual Directory Services

Exercise 11: Create a .properties file

Run the following commands to create the file:

cd /home/developer/nvds/embed/installers

kwrite installer.properties

(you could use another editor, such as vi)

Add the following lines and save the file:

DS_UNIQUE_INSTANCE_NAME=<instance>

DS_LDAP_PORT=1389

DS_LDAP_PORT_SSL=1636

DS_SOAP_PORT=18022

LPH_INSTALL_LDAPV3=0

Embedding Novell Virtual Directory Services

Exercise 12: Installing the Repackaged Installer

Run the following commands to install the installer:

cd /home/developer/nvds/embed/installers

su

./<instance>-nvds_lxx86.sh installer.properties

The install will then proceed without asking for any input

For more details, see the Developer Guide

Embedding Novell Virtual Directory Services

Embedding the Installer on Other Platforms

Does not require repackaging, but instead requires a user install directory parameter

Passing variables can be done using a .properties file or by using Install Anywhere Merge Modules

Full details for embedding the NVDS installer on all supported platforms are available in the Developer Guide

Embedding Novell Virtual Directory Services

Summary

NVDS Use Cases and Architecture

Useful Tools for NVDS

Hands-on Exercises

Installing and Configuring NVDS

Configuring and Using Identity Integration

Using the Web Services SDK

Embedding NVDS in your own application

2003-12-08T12:43:39