JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle Fusion Middleware Glossary for Oracle Unified Directory 11g Release 1 (11.1.1)
search filter icon
search icon

Document Information

1.  Glossary

A

abandon operation

abstract object class

Abstract Syntax Notation One

access control

access control instruction (ACI)

access control rule

access log

account expiration

account lockout

account status notification

account usability control

ACID

add operation

alias

AND search filter

anonymous bind

ANONYMOUS SASL mechanism

approximate index

approximate search filter

ASN.1

assertion value

attribute

attribute description

attribute option

attribute syntax

attribute type

attribute usage

attribute value

attribute value assertion

audit log

authentication

authentication ID

authentication password syntax

authorization

authorization ID

authorization identity control

auxiliary object class

AVA

B

back end

backup

base64 encoding

Basic Encoding Rules

Basic Encoding Rules Overview

The BER Type

The BER Length

The BER Value

BER Encoding Examples

BER

Berkeley DB Java Edition

binary copy

bind operation

C

cancel extended operation

CDDL

certificate

certificate mapper

chaining

changelog

cn=Directory Manager

collective attribute

Common Development and Distribution License

compare operation

connection handler

connection ID

control

CRAM-MD5 SASL mechanism

crypt algorithm

D

database

database cache

debug log

delete operation

deprecated password storage scheme

dereference policy

DIGEST-MD5 SASL mechanism

directory information tree

directory manager

directory server

directory server agent

Directory Services Markup Language

distinguished name

distribution

DIT

DIT content rule

DIT structure rule

DN

DSA

DSA-specific entry

DSE

DSML

DSML gateway

duration

dynamic group

E

entry

entry cache

entry change notification control

entryDN

entry ID

entryUUID

equality index

equality search filter

error log

export

extended operation

extensible match index

extensible match search filter

EXTERNAL SASL mechanism

F

failover algorithm

false filter

G

generalized time

get effective rights control

global index

global index catalog

greater than or equal to search filter

group

GSSAPI SASL mechanism

I

ID list

id2entry database

identity mapper

idle account lockout

in-core restart

index

index entry limit

intermediate response

Internet Draft

J

Java Management Extensions

JMX

K

key manager provider

L

last login time

lastmod plug-in

LDAP assertion control

ldapcompare command

LDAP Data Interchange Format

ldapdelete command

LDAP false filter

LDAP intermediate response

LDAP message

LDAP modify DN operation

LDAP modify operation

ldapmodify command

LDAP no-op control

LDAP post-read control

LDAP pre-read control

LDAP result

LDAPS

LDAP search filter

ldapsearch command

LDAP true filter

LDAP Subentry

LDAP URL

LDIF export

LDIF import

leaf entry

less than or equal to search filter

lexico algorithm

Lightweight Directory Access Protocol

load balancing

lookthrough limit

M

MakeLDIF command

manage DSA IT control

matched DN

matched values control

matching rule

matching rule use

MD5

message

message ID

modification

modification type

modify DN operation

modify operation

monitor entry

N

name form

naming context

network group

non-leaf entry

normalized value

notice of disconnection unsolicited notification

NOT search filter

numeric algorithm

O

object class

object class type

object identifier

operation ID

operational attribute

ordering index

OR search filter

P

partition

password

password expiration

password generator

Password Modify extended operation

password policy

password policy control

password reset

password storage scheme

password validator

persistent search control

PLAIN SASL mechanism

plug-in

presence index

presence search filter

privilege

proportional algorithm

protocol data unit

protocol op

proxied authorization control

Q

quality of protection

R

real attributes only control

referential integrity

referral

relative distinguished name

replica

replication

replication repair control

request for comments

restore

result

result code

root DN

root DSE

route

S

salt

saturation algorithm

saturation alert

saturation threshold

schema

schema checking

search attributes

search base DN

search filter

search operation

search result done

search result entry

search result reference

search scope

Secure Hash Algorithm

Secure Sockets Layer

server-side sort control

simple authentication

Simple Authentication and Security Layer

simple paged results control

size limit

smart referral

StartTLS extended operation

static group

structural object class

subentry

subschema subentry

substring assertion

substring index

substring search filter

subtree

subtree delete control

supported control

supported extension

supported feature

synchronization

T

task

time limit

transaction

Transport Security Layer

true filter

trust manager provider

typesOnly flag

U

unbind operation

unindexed search

UNIX crypt algorithm

unsolicited notification

URL

user attribute

V

virtual attribute

virtual attributes only control

virtual directory

virtual list view control

virtual static group

VLV index

W

"Who Am I?" extended operation

work queue

worker thread

workflow

workflow element

writability mode

B

 

back end

A Directory Server back end provides a repository for storing data and a set of logic for interacting with that data. A back end will typically contain some kind of database and may maintain a set of indexes that allows the back end to quickly locate entries for various operations. All back ends will have the following qualities:

The logic provided by the back end includes:

backup

A backup is a transportable representation of the data in a Directory Server back end. Each back end is responsible for controlling whether or not it is possible to back up its contents, and ensuring that the backup information is suitable to be restored at a later time. Note that the term “back up” is a verb (the action of backing up the contents of the back end) and “backup” is a noun (what you get when you perform a backup).

There are a number of reasons that a back end may not provide a backup mechanism. Some reasons include:

The primary back end used by the directory server is one that uses the Berkeley DB Java Edition as its underlying database and that back end provides complete backup and restore capabilities. The backup mechanism is also very portable and can be transported across different platforms and different filesystem locations, and it is suitable for use as a binary copy mechanism.

base64 encoding

Base64 encoding is a way of representing binary data in a text-only form. It is commonly used in LDIF for values containing non-ASCII characters, or for values that could otherwise be ambiguous (for example, values that begin or end with spaces). It is also frequently used to encode certificate contents or the output of message digests like MD5 or SHA. The base64 encoding is described in section 5.2 of RFC 1341.

The basic principle of base64 encoding is that it defines a 64-character alphabet containing the following characters in the given order:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

Each of those characters is assigned a numeric value between 0 and 63 based on its position in the list (that is, A is 0, B is 1, C is 2, ... + is 62, and / is 63). A value is broken up into six-bit segments, and each of those six bits is converted into a numeric value between 0 and 63 and replaced with the specified character from the alphabet given above. This means that every three bytes of a binary value is converted into four characters from the base64 alphabet. If the length of the binary value is not a multiple of three bytes, then it is zero-padded and either one or two equal signs are appended to the base64-encoded value.

Basic Encoding Rules

The Basic Encoding Rules (BER) are a set of Abstract Syntax Notation One encoding rules that define a specific way in which information may be encoded in a binary form. It is used as the underlying mechanism for encoding message.

Basic Encoding Rules Overview

Many network protocols are text-based, which has the advantages of being relatively easy to understand if you examine the network traffic, and in many cases you can even interact with the target server by telnetting to it and typing in the appropriate commands. However, there are disadvantages as well, including that they are generally more verbose and less efficient to parse than they need to be. On the other hand, other protocols use a binary encoding that is more compact and more efficient. LDAP falls into this category, and uses the ASN.1 (abstract syntax notation one) mechanism, and more specifically the BER (basic encoding rules) flavor of ASN.1. There are a number of other encoding rules (such as DER, PER, and CER) that fall under the ASN.1 umbrella, but LDAP uses BER.

This section discusses the subset of BER that is used by LDAP in particular and does not address other cases.

BER elements use a TLV structure, where TLV stands for “type”, “length”, and “value”. That is, each BER element has one or more bytes (in LDAP, typically only a single byte) that indicates the data type for the element, one or more bytes that indicate the length of the value, and the encoded value itself (where the form of the encoded value depends on the data type), which can be zero or more bytes, as described in the following sections:

The BER Type

The BER type indicates the data type for the value of the element. The BER specification provides several different data types, but the most commonly used by LDAP include OCTET STRING (which can be either a text string or just some binary data), INTEGER, BOOLEAN, NULL, ENUMERATED (like an integer, but where each value has a special meaning), SEQUENCE (an ordered collection of other elements, similar to an array), and SET (the same as a sequence, except that the order doesn't matter). There is also a CHOICE element, but it typically allows one of a few different kinds of elements.

The BER type is typically only a single byte, and this byte has data encoded in it. The two most significant bits (the two leftmost bits, because BER uses big endian/network ordering) are used to indicate the class for the element, using these possible class values:

00

The universal class. Most BER elements have a universal type, so any element with a universal type specifies what kind of data it holds. Examples of universal types include 0x01 (BOOLEAN), 0x02 (INTEGER), 0x04 (OCTET STRING), 0x05 (NULL), 0x0A (ENUMERATED), 0x30 (SEQUENCE), and 0x31 (SET). The binary encodings for all of those type values have the leftmost two bits set to zero.

01

The application-specific class. This class allows an application to define its own types that are consistent throughout that application. In this context, LDAP is considered an application. For example, when 0x42 appears in LDAP, it indicates an unbind request protocol op, because RFC 2251 section 4.3 states that the unbind request protocol op has a type of [APPLICATION 2].

10

The context-specific class. This class indicates that the type is specific to a particular usage within a given application. The same type can be re-used in different contexts in the same application as long as there is enough other information to determine which context is applicable in a given situation. For example, in the context of the credentials in a bind request protocol op, the context-specific type 0x80 is used to hold the bind password, but in the context of an extended operation it would be used to hold the request OID.

11

The private class, not typically used in LDAP.

The next bit (the third from the left) is the primitive/constructed bit. If it is set to zero (off), then the element is considered primitive, and the value is encoded in accordance with the rules of that data type. If it is set to one (on), then it means that the value is constructed from zero or more other ASN.1 elements that are concatenated together in their encoded forms. For example, for the universal SEQUENCE type of 0x30, the binary encoding is 00110000 and the primitive/constructed bit is set to one indicating that the value of the sequence is constructed from zero or more encoded elements.

The final five bits of the BER type byte specify the value of that type, and they are treated as a simple integer value (where 00000 is zero, 00001 is one, 00010 is two, 00011 is three, and so on). The only special value is 11111, which means that the type value is larger than can fit in the five bits allowed, and so multiple bytes are required. This value is not used in LDAP.

The BER Length

The second component in the TLV structure of a BER element is the length. This specifies the size in bytes of the encoded value. For the most part, this uses a straightforward binary encoding of the integer value (for example, if the encoded value is five bytes long, then it is encoded as 00000101 binary, or 0x05 hex), but if the value is longer than 127 bytes then it is necessary to use multiple bytes to encode the length. In that case, the first byte has the leftmost bit set to one and the remaining seven bits are used to specify the number of bytes required to encode the full length. For example, if there are 500 bytes in the length (hex 0x01F4), then the encoded length will actually consist of three bytes: 82 01 F4.

Note that there is an alternate form for encoding the length called the indefinite form. In this mechanism, only a part of the length is given at a time, similar to the chunked encoding that is available in HTTP 1.1. However, this form is not used in LDAP, as specified in RFC 2251 section 5.1.

The BER Value

The BER element contains the actual data of the element. Because BER is a binary encoding, the encodings can take advantage of that to represent the data in a compact form. As such, each data type has its own encoded form:

NULL

The NULL element never has a value, and therefore the length is always zero.

OCTET STRING

The value of this element is encoded as a concatenation of the raw bytes of the data being represented. For example, to represent the string Hello, the encoded value would be 48 65 6C 6C 6F. The value can have a length of zero bytes.

BOOLEAN

The value of this element is always a single byte. If all the bits in that byte are set to zero (0x00), then the value is FALSE. If one or more of the bytes is set to one, then the value is TRUE. As a result, there are 255 different ways to encode a BOOLEAN value of TRUE, but in practice it is generally encoded as 0xFF (that is, all the bits are set to one).

INTEGER

The value of this element is encoded as a binary integer in two's complement form. Although BER itself does not place a limit on the magnitude of the values that can be encoded, many software implementations have a cap of four or eight bytes (that is, 32-bit or 64-bit integer values), and LDAP generally uses a maximum of 4 bytes (which allows encoding values within the plus or minus 2 billion range). There is always at least one byte in the value.

ENUMERATED

The value of this element is encoded in exactly the same way as the value of an INTEGER element.

SEQUENCE

The value of this element is simply a concatenation of the encoded BER elements contained in the sequence. For example, to encode a sequence with two octet string elements encoding the text Hello and there, the encoded sequence value is 04 05 48 65 6C 6C 6F 04 05 74 68 65 72 65. A sequence value can be zero bytes if there are no elements in the sequence.

SET

The value of this element is encoded in exactly the same way as the value of a SEQUENCE element.

BER Encoding Examples

The example above for encoding a SEQUENCE value had two complete BER elements concatenated together: the OCTET STRING representations of the strings Hello and there:

04 05 48 65 6C 6C 6F
04 05 74 68 65 72 65

In both of these cases, the first byte is the type (0x04, which is the universal primitive OCTET STRING type), and the second is the length (0x05, indicating that there are five bytes in the value). The remaining five bytes are the encoded representations of the strings Hello and there.

The following example encodes the integer value 3 using a context-specific type value of 5 instead of the universal INTEGER type:

85 01 03

The next example encodes an LDAP bind request protocol op as defined in RFC 2251 section 4.2. A simplified BNF representation of this element is as follows:

BindRequest ::= [APPLICATION 0] SEQUENCE {
     version                    INTEGER (1 .. 127),
     name                       OCTET STRING,
     authentication             CHOICE {
          simple                [0] OCTET STRING,
          sasl                  [3] SEQUENCE {
               mechanism        OCTET STRING,
               credentials      OCTET STRING OPTIONAL } } }

This example encodes a bind request using simple authentication for the user cn=test with a password of password. The complete encoding for this bind request protocol op is:

60 16 02 01 03 04 07 63 6E 3D 74 65 73 74 80 08 70 61 73 73 77 6F 72 64

In analysis, that string of bytes contains the following information:

BER

See Basic Encoding Rules.

Berkeley DB Java Edition

The Berkeley DB Java Edition (also referred to as “Berkeley DB JE”, “BDBJE”, or “JE”) is a pure Java database designed by Sleepycat Software, which was purchased by the Oracle Corporation. It provides a highly-scalable, high-performance, transactional B-Tree database, with support for full ACID semantics and it is used as the primary database for storing user data.

The directory server provides a back end that uses the Berkeley DB Java Edition for storing its information. This back end is often called the “JE Backend” or simply “JEB”. It uses a Berkeley DB Java Edition environment that consists of multiple individual databases. The id2entry database provides a mechanism for mapping entry ID values to entry contents. Other databases serve as indexes that can be used to quickly find entry contents for processing various types of operations.

binary copy

Binary copy refers to the process of performing a backup of a Directory Server back end of one server instance and restore that back end into another instance of the server. This can provide a fast disaster recovery mechanism and can also be used as a replica initialization mechanism.

Not all Directory Server back ends necessarily support the use of binary copy, and those that do may not support it in all circumstances. The primary back end type used by the directory server is based on the use of the Berkeley DB Java Edition, and it does support the use of the binary copy mechanism, including across different operating systems and CPU architectures, and with different filesystem locations. However, it does require that both servers have the same set of base DNs and the same types of indexes defined.

bind operation

The LDAP bind operation can be used to authenticate to the Directory Server. There are two basic types of bind operations:

The bind request protocol op is defined as follows:

BindRequest ::= [APPLICATION 0] SEQUENCE {
     version                 INTEGER (1 ..  127),
     name                    LDAPDN,
     authentication          AuthenticationChoice } 

AuthenticationChoice ::= CHOICE {
     simple                  [0] OCTET STRING,
                                 -- 1 and 2 reserved
     sasl                    [3] SaslCredentials,
     ...  }

SaslCredentials ::= SEQUENCE {
     mechanism               LDAPString,
     credentials             OCTET STRING OPTIONAL }

The elements of the request include:

The response to an LDAP bind operation is defined as follows:

BindResponse ::= [APPLICATION 1] SEQUENCE {
     COMPONENTS OF LDAPResult,
     serverSaslCreds    [7] OCTET STRING OPTIONAL }

This indicates that the bind response will include the elements in the LDAP result object and may also include a set of server SASL credentials if appropriate for the authentication type.