Merge pull request #900 from ericchiang/ldap-tests
connector/ldap: add LDAP integration tests
This commit is contained in:
commit
7395f05e95
@ -1,5 +1,7 @@
|
|||||||
language: go
|
language: go
|
||||||
|
|
||||||
|
sudo: required
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.7.5
|
- 1.7.5
|
||||||
- 1.8
|
- 1.8
|
||||||
@ -8,11 +10,14 @@ services:
|
|||||||
- postgresql
|
- postgresql
|
||||||
|
|
||||||
env:
|
env:
|
||||||
- DEX_POSTGRES_DATABASE=postgres DEX_POSTGRES_USER=postgres DEX_POSTGRES_HOST="localhost"
|
- DEX_POSTGRES_DATABASE=postgres DEX_POSTGRES_USER=postgres DEX_POSTGRES_HOST="localhost" DEX_LDAP_TESTS=1 DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- go get -u github.com/golang/lint/golint
|
- go get -u github.com/golang/lint/golint
|
||||||
|
- sudo -E apt-get install -y --force-yes slapd time ldap-utils
|
||||||
|
- sudo /etc/init.d/slapd stop
|
||||||
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- make testall
|
- make testall
|
||||||
|
@ -154,6 +154,10 @@ func (c *Config) OpenConnector(logger logrus.FieldLogger) (interface {
|
|||||||
connector.PasswordConnector
|
connector.PasswordConnector
|
||||||
connector.RefreshConnector
|
connector.RefreshConnector
|
||||||
}, error) {
|
}, error) {
|
||||||
|
return c.openConnector(logger)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Config) openConnector(logger logrus.FieldLogger) (*ldapConnector, error) {
|
||||||
|
|
||||||
requiredFields := []struct {
|
requiredFields := []struct {
|
||||||
name string
|
name string
|
||||||
|
453
connector/ldap/ldap_test.go
Normal file
453
connector/ldap/ldap_test.go
Normal file
@ -0,0 +1,453 @@
|
|||||||
|
package ldap
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
"sync"
|
||||||
|
"testing"
|
||||||
|
"text/template"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/Sirupsen/logrus"
|
||||||
|
"github.com/kylelemons/godebug/pretty"
|
||||||
|
|
||||||
|
"github.com/coreos/dex/connector"
|
||||||
|
)
|
||||||
|
|
||||||
|
const envVar = "DEX_LDAP_TESTS"
|
||||||
|
|
||||||
|
// subtest is a login test against a given schema.
|
||||||
|
type subtest struct {
|
||||||
|
// Name of the sub-test.
|
||||||
|
name string
|
||||||
|
|
||||||
|
// Password credentials, and if the connector should request
|
||||||
|
// groups as well.
|
||||||
|
username string
|
||||||
|
password string
|
||||||
|
groups bool
|
||||||
|
|
||||||
|
// Expected result of the login.
|
||||||
|
wantErr bool
|
||||||
|
wantBadPW bool
|
||||||
|
want connector.Identity
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestQuery(t *testing.T) {
|
||||||
|
schema := `
|
||||||
|
dn: dc=example,dc=org
|
||||||
|
objectClass: dcObject
|
||||||
|
objectClass: organization
|
||||||
|
o: Example Company
|
||||||
|
dc: example
|
||||||
|
|
||||||
|
dn: ou=People,dc=example,dc=org
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: People
|
||||||
|
|
||||||
|
dn: cn=jane,ou=People,dc=example,dc=org
|
||||||
|
objectClass: person
|
||||||
|
objectClass: iNetOrgPerson
|
||||||
|
sn: doe
|
||||||
|
cn: jane
|
||||||
|
mail: janedoe@example.com
|
||||||
|
userpassword: foo
|
||||||
|
|
||||||
|
dn: cn=john,ou=People,dc=example,dc=org
|
||||||
|
objectClass: person
|
||||||
|
objectClass: iNetOrgPerson
|
||||||
|
sn: doe
|
||||||
|
cn: john
|
||||||
|
mail: johndoe@example.com
|
||||||
|
userpassword: bar
|
||||||
|
`
|
||||||
|
c := &Config{}
|
||||||
|
c.UserSearch.BaseDN = "ou=People,dc=example,dc=org"
|
||||||
|
c.UserSearch.NameAttr = "cn"
|
||||||
|
c.UserSearch.EmailAttr = "mail"
|
||||||
|
c.UserSearch.IDAttr = "DN"
|
||||||
|
c.UserSearch.Username = "cn"
|
||||||
|
|
||||||
|
tests := []subtest{
|
||||||
|
{
|
||||||
|
name: "validpassword",
|
||||||
|
username: "jane",
|
||||||
|
password: "foo",
|
||||||
|
want: connector.Identity{
|
||||||
|
UserID: "cn=jane,ou=People,dc=example,dc=org",
|
||||||
|
Username: "jane",
|
||||||
|
Email: "janedoe@example.com",
|
||||||
|
EmailVerified: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "validpassword2",
|
||||||
|
username: "john",
|
||||||
|
password: "bar",
|
||||||
|
want: connector.Identity{
|
||||||
|
UserID: "cn=john,ou=People,dc=example,dc=org",
|
||||||
|
Username: "john",
|
||||||
|
Email: "johndoe@example.com",
|
||||||
|
EmailVerified: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "invalidpassword",
|
||||||
|
username: "jane",
|
||||||
|
password: "badpassword",
|
||||||
|
wantBadPW: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "invaliduser",
|
||||||
|
username: "idontexist",
|
||||||
|
password: "foo",
|
||||||
|
wantBadPW: true, // Want invalid password, not a query error.
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
runTests(t, schema, c, tests)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGroupQuery(t *testing.T) {
|
||||||
|
schema := `
|
||||||
|
dn: dc=example,dc=org
|
||||||
|
objectClass: dcObject
|
||||||
|
objectClass: organization
|
||||||
|
o: Example Company
|
||||||
|
dc: example
|
||||||
|
|
||||||
|
dn: ou=People,dc=example,dc=org
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: People
|
||||||
|
|
||||||
|
dn: cn=jane,ou=People,dc=example,dc=org
|
||||||
|
objectClass: person
|
||||||
|
objectClass: iNetOrgPerson
|
||||||
|
sn: doe
|
||||||
|
cn: jane
|
||||||
|
mail: janedoe@example.com
|
||||||
|
userpassword: foo
|
||||||
|
|
||||||
|
dn: cn=john,ou=People,dc=example,dc=org
|
||||||
|
objectClass: person
|
||||||
|
objectClass: iNetOrgPerson
|
||||||
|
sn: doe
|
||||||
|
cn: john
|
||||||
|
mail: johndoe@example.com
|
||||||
|
userpassword: bar
|
||||||
|
|
||||||
|
# Group definitions.
|
||||||
|
|
||||||
|
dn: ou=Groups,dc=example,dc=org
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: Groups
|
||||||
|
|
||||||
|
dn: cn=admins,ou=Groups,dc=example,dc=org
|
||||||
|
objectClass: groupOfNames
|
||||||
|
cn: admins
|
||||||
|
member: cn=john,ou=People,dc=example,dc=org
|
||||||
|
member: cn=jane,ou=People,dc=example,dc=org
|
||||||
|
|
||||||
|
dn: cn=developers,ou=Groups,dc=example,dc=org
|
||||||
|
objectClass: groupOfNames
|
||||||
|
cn: developers
|
||||||
|
member: cn=jane,ou=People,dc=example,dc=org
|
||||||
|
`
|
||||||
|
c := &Config{}
|
||||||
|
c.UserSearch.BaseDN = "ou=People,dc=example,dc=org"
|
||||||
|
c.UserSearch.NameAttr = "cn"
|
||||||
|
c.UserSearch.EmailAttr = "mail"
|
||||||
|
c.UserSearch.IDAttr = "DN"
|
||||||
|
c.UserSearch.Username = "cn"
|
||||||
|
c.GroupSearch.BaseDN = "ou=Groups,dc=example,dc=org"
|
||||||
|
c.GroupSearch.UserAttr = "DN"
|
||||||
|
c.GroupSearch.GroupAttr = "member"
|
||||||
|
c.GroupSearch.NameAttr = "cn"
|
||||||
|
|
||||||
|
tests := []subtest{
|
||||||
|
{
|
||||||
|
name: "validpassword",
|
||||||
|
username: "jane",
|
||||||
|
password: "foo",
|
||||||
|
groups: true,
|
||||||
|
want: connector.Identity{
|
||||||
|
UserID: "cn=jane,ou=People,dc=example,dc=org",
|
||||||
|
Username: "jane",
|
||||||
|
Email: "janedoe@example.com",
|
||||||
|
EmailVerified: true,
|
||||||
|
Groups: []string{"admins", "developers"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "validpassword2",
|
||||||
|
username: "john",
|
||||||
|
password: "bar",
|
||||||
|
groups: true,
|
||||||
|
want: connector.Identity{
|
||||||
|
UserID: "cn=john,ou=People,dc=example,dc=org",
|
||||||
|
Username: "john",
|
||||||
|
Email: "johndoe@example.com",
|
||||||
|
EmailVerified: true,
|
||||||
|
Groups: []string{"admins"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
runTests(t, schema, c, tests)
|
||||||
|
}
|
||||||
|
|
||||||
|
// runTests runs a set of tests against an LDAP schema. It does this by
|
||||||
|
// setting up an OpenLDAP server and injecting the provided scheme.
|
||||||
|
//
|
||||||
|
// The tests require the slapd and ldapadd binaries available in the host
|
||||||
|
// machine's PATH.
|
||||||
|
//
|
||||||
|
// The DEX_LDAP_TESTS must be set to "1"
|
||||||
|
func runTests(t *testing.T, schema string, config *Config, tests []subtest) {
|
||||||
|
if os.Getenv(envVar) != "1" {
|
||||||
|
t.Skipf("%s not set. Skipping test (run 'export %s=1' to run tests)", envVar, envVar)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, cmd := range []string{"slapd", "ldapadd"} {
|
||||||
|
if _, err := exec.LookPath(cmd); err != nil {
|
||||||
|
t.Errorf("%s not available", cmd)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tempDir, err := ioutil.TempDir("", "")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tempDir)
|
||||||
|
|
||||||
|
configBytes := new(bytes.Buffer)
|
||||||
|
|
||||||
|
if err := slapdConfigTmpl.Execute(configBytes, tmplData{tempDir, includes(t)}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
configPath := filepath.Join(tempDir, "ldap.conf")
|
||||||
|
if err := ioutil.WriteFile(configPath, configBytes.Bytes(), 0644); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
schemaPath := filepath.Join(tempDir, "schema.ldap")
|
||||||
|
if err := ioutil.WriteFile(schemaPath, []byte(schema), 0644); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
socketPath := url.QueryEscape(filepath.Join(tempDir, "ldap.unix"))
|
||||||
|
|
||||||
|
slapdOut := new(bytes.Buffer)
|
||||||
|
|
||||||
|
cmd := exec.Command(
|
||||||
|
"slapd",
|
||||||
|
"-d", "any",
|
||||||
|
"-h", "ldap://localhost:10363/ ldaps://localhost:10636/ ldapi://"+socketPath,
|
||||||
|
"-f", configPath,
|
||||||
|
)
|
||||||
|
cmd.Stdout = slapdOut
|
||||||
|
cmd.Stderr = slapdOut
|
||||||
|
if err := cmd.Start(); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
// Wait group finishes once slapd has exited.
|
||||||
|
//
|
||||||
|
// Use a wait group because multiple goroutines can't listen on
|
||||||
|
// cmd.Wait(). It triggers the race detector.
|
||||||
|
wg = new(sync.WaitGroup)
|
||||||
|
// Ensure only one condition can set the slapdFailed boolean.
|
||||||
|
once = new(sync.Once)
|
||||||
|
slapdFailed bool
|
||||||
|
)
|
||||||
|
|
||||||
|
wg.Add(1)
|
||||||
|
go func() { cmd.Wait(); wg.Done() }()
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if slapdFailed {
|
||||||
|
// If slapd exited before it was killed, print its logs.
|
||||||
|
t.Logf("%s\n", slapdOut)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
wg.Wait()
|
||||||
|
once.Do(func() { slapdFailed = true })
|
||||||
|
}()
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
once.Do(func() { slapdFailed = false })
|
||||||
|
cmd.Process.Kill()
|
||||||
|
wg.Wait()
|
||||||
|
}()
|
||||||
|
|
||||||
|
// Wait for slapd to come up.
|
||||||
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
|
||||||
|
ldapadd := exec.Command(
|
||||||
|
"ldapadd", "-x",
|
||||||
|
"-D", "cn=admin,dc=example,dc=org",
|
||||||
|
"-w", "admin",
|
||||||
|
"-f", schemaPath,
|
||||||
|
"-H", "ldap://localhost:10363/",
|
||||||
|
)
|
||||||
|
if out, err := ldapadd.CombinedOutput(); err != nil {
|
||||||
|
t.Errorf("ldapadd: %s", out)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shallow copy.
|
||||||
|
c := *config
|
||||||
|
|
||||||
|
// We need to configure host parameters but don't want to overwrite user or
|
||||||
|
// group search configuration.
|
||||||
|
c.Host = "localhost:10363"
|
||||||
|
c.InsecureNoSSL = true
|
||||||
|
c.BindDN = "cn=admin,dc=example,dc=org"
|
||||||
|
c.BindPW = "admin"
|
||||||
|
|
||||||
|
l := &logrus.Logger{Out: ioutil.Discard, Formatter: &logrus.TextFormatter{}}
|
||||||
|
|
||||||
|
conn, err := c.openConnector(l)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("open connector: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
if test.name == "" {
|
||||||
|
t.Fatal("go a subtest with no name")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run the subtest.
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
s := connector.Scopes{OfflineAccess: true, Groups: test.groups}
|
||||||
|
ident, validPW, err := conn.Login(context.Background(), s, test.username, test.password)
|
||||||
|
if err != nil {
|
||||||
|
if !test.wantErr {
|
||||||
|
t.Fatalf("query failed: %v", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if test.wantErr {
|
||||||
|
t.Fatalf("wanted query to fail")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !validPW {
|
||||||
|
if !test.wantBadPW {
|
||||||
|
t.Fatalf("invalid password: %v", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if test.wantBadPW {
|
||||||
|
t.Fatalf("wanted invalid password")
|
||||||
|
}
|
||||||
|
got := ident
|
||||||
|
got.ConnectorData = nil
|
||||||
|
|
||||||
|
if diff := pretty.Compare(test.want, got); diff != "" {
|
||||||
|
t.Error(diff)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify that refresh tokens work.
|
||||||
|
ident, err = conn.Refresh(context.Background(), s, ident)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("refresh failed: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
got = ident
|
||||||
|
got.ConnectorData = nil
|
||||||
|
|
||||||
|
if diff := pretty.Compare(test.want, got); diff != "" {
|
||||||
|
t.Errorf("after refresh: %s", diff)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Standard OpenLDAP schema files to include.
|
||||||
|
//
|
||||||
|
// These are copied from the /etc/openldap/schema directory.
|
||||||
|
var includeFiles = []string{
|
||||||
|
"core.schema",
|
||||||
|
"cosine.schema",
|
||||||
|
"inetorgperson.schema",
|
||||||
|
"misc.schema",
|
||||||
|
"nis.schema",
|
||||||
|
"openldap.schema",
|
||||||
|
}
|
||||||
|
|
||||||
|
// tmplData is the struct used to execute the SLAPD config template.
|
||||||
|
type tmplData struct {
|
||||||
|
// Directory for database to be writen to.
|
||||||
|
TempDir string
|
||||||
|
// List of schema files to include.
|
||||||
|
Includes []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Config template copied from:
|
||||||
|
// http://www.zytrax.com/books/ldap/ch5/index.html#step1-slapd
|
||||||
|
var slapdConfigTmpl = template.Must(template.New("").Parse(`
|
||||||
|
{{ range $i, $include := .Includes }}
|
||||||
|
include {{ $include }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
# MODULELOAD definitions
|
||||||
|
# not required (comment out) before version 2.3
|
||||||
|
moduleload back_bdb.la
|
||||||
|
|
||||||
|
database bdb
|
||||||
|
suffix "dc=example,dc=org"
|
||||||
|
|
||||||
|
# root or superuser
|
||||||
|
rootdn "cn=admin,dc=example,dc=org"
|
||||||
|
rootpw admin
|
||||||
|
# The database directory MUST exist prior to running slapd AND
|
||||||
|
# change path as necessary
|
||||||
|
directory {{ .TempDir }}
|
||||||
|
|
||||||
|
# Indices to maintain for this directory
|
||||||
|
# unique id so equality match only
|
||||||
|
index uid eq
|
||||||
|
# allows general searching on commonname, givenname and email
|
||||||
|
index cn,gn,mail eq,sub
|
||||||
|
# allows multiple variants on surname searching
|
||||||
|
index sn eq,sub
|
||||||
|
# sub above includes subintial,subany,subfinal
|
||||||
|
# optimise department searches
|
||||||
|
index ou eq
|
||||||
|
# if searches will include objectClass uncomment following
|
||||||
|
# index objectClass eq
|
||||||
|
# shows use of default index parameter
|
||||||
|
index default eq,sub
|
||||||
|
# indices missing - uses default eq,sub
|
||||||
|
index telephonenumber
|
||||||
|
|
||||||
|
# other database parameters
|
||||||
|
# read more in slapd.conf reference section
|
||||||
|
cachesize 10000
|
||||||
|
checkpoint 128 15
|
||||||
|
`))
|
||||||
|
|
||||||
|
func includes(t *testing.T) (paths []string) {
|
||||||
|
wd, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("getting working directory: %v", err)
|
||||||
|
}
|
||||||
|
for _, f := range includeFiles {
|
||||||
|
p := filepath.Join(wd, "testdata", f)
|
||||||
|
if _, err := os.Stat(p); err != nil {
|
||||||
|
t.Fatalf("failed to find schema file: %s %v", p, err)
|
||||||
|
}
|
||||||
|
paths = append(paths, p)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
610
connector/ldap/testdata/core.schema
vendored
Normal file
610
connector/ldap/testdata/core.schema
vendored
Normal file
@ -0,0 +1,610 @@
|
|||||||
|
# OpenLDAP Core schema
|
||||||
|
# $OpenLDAP$
|
||||||
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
||||||
|
##
|
||||||
|
## Copyright 1998-2016 The OpenLDAP Foundation.
|
||||||
|
## All rights reserved.
|
||||||
|
##
|
||||||
|
## Redistribution and use in source and binary forms, with or without
|
||||||
|
## modification, are permitted only as authorized by the OpenLDAP
|
||||||
|
## Public License.
|
||||||
|
##
|
||||||
|
## A copy of this license is available in the file LICENSE in the
|
||||||
|
## top-level directory of the distribution or, alternatively, at
|
||||||
|
## <http://www.OpenLDAP.org/license.html>.
|
||||||
|
#
|
||||||
|
## Portions Copyright (C) The Internet Society (1997-2006).
|
||||||
|
## All Rights Reserved.
|
||||||
|
##
|
||||||
|
## This document and translations of it may be copied and furnished to
|
||||||
|
## others, and derivative works that comment on or otherwise explain it
|
||||||
|
## or assist in its implementation may be prepared, copied, published
|
||||||
|
## and distributed, in whole or in part, without restriction of any
|
||||||
|
## kind, provided that the above copyright notice and this paragraph are
|
||||||
|
## included on all such copies and derivative works. However, this
|
||||||
|
## document itself may not be modified in any way, such as by removing
|
||||||
|
## the copyright notice or references to the Internet Society or other
|
||||||
|
## Internet organizations, except as needed for the purpose of
|
||||||
|
## developing Internet standards in which case the procedures for
|
||||||
|
## copyrights defined in the Internet Standards process must be
|
||||||
|
## followed, or as required to translate it into languages other than
|
||||||
|
## English.
|
||||||
|
##
|
||||||
|
## The limited permissions granted above are perpetual and will not be
|
||||||
|
## revoked by the Internet Society or its successors or assigns.
|
||||||
|
##
|
||||||
|
## This document and the information contained herein is provided on an
|
||||||
|
## "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||||||
|
## TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||||||
|
## BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||||||
|
## HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||||||
|
## MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Includes LDAPv3 schema items from:
|
||||||
|
# RFC 2252/2256 (LDAPv3)
|
||||||
|
#
|
||||||
|
# Select standard track schema items:
|
||||||
|
# RFC 1274 (uid/dc)
|
||||||
|
# RFC 2079 (URI)
|
||||||
|
# RFC 2247 (dc/dcObject)
|
||||||
|
# RFC 2587 (PKI)
|
||||||
|
# RFC 2589 (Dynamic Directory Services)
|
||||||
|
# RFC 4524 (associatedDomain)
|
||||||
|
#
|
||||||
|
# Select informational schema items:
|
||||||
|
# RFC 2377 (uidObject)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Standard attribute types from RFC 2256
|
||||||
|
#
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.0 NAME 'objectClass'
|
||||||
|
# DESC 'RFC2256: object classes of the entity'
|
||||||
|
# EQUALITY objectIdentifierMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.1 NAME ( 'aliasedObjectName' 'aliasedEntryName' )
|
||||||
|
# DESC 'RFC2256: name of aliased object'
|
||||||
|
# EQUALITY distinguishedNameMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.2 NAME 'knowledgeInformation'
|
||||||
|
DESC 'RFC2256: knowledge information'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.3 NAME ( 'cn' 'commonName' )
|
||||||
|
# DESC 'RFC2256: common name(s) for which the entity is known by'
|
||||||
|
# SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )
|
||||||
|
DESC 'RFC2256: last (family) name(s) for which the entity is known by'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.5 NAME 'serialNumber'
|
||||||
|
DESC 'RFC2256: serial number of the entity'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )
|
||||||
|
|
||||||
|
# RFC 4519 definition ('countryName' in X.500 and RFC2256)
|
||||||
|
attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' )
|
||||||
|
DESC 'RFC4519: two-letter ISO-3166 country code'
|
||||||
|
SUP name
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.11
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
#attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' )
|
||||||
|
# DESC 'RFC2256: ISO-3166 country 2-letter code'
|
||||||
|
# SUP name SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.7 NAME ( 'l' 'localityName' )
|
||||||
|
DESC 'RFC2256: locality which this object resides in'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' )
|
||||||
|
DESC 'RFC2256: state or province which this object resides in'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.9 NAME ( 'street' 'streetAddress' )
|
||||||
|
DESC 'RFC2256: street address of this object'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.10 NAME ( 'o' 'organizationName' )
|
||||||
|
DESC 'RFC2256: organization this object belongs to'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' )
|
||||||
|
DESC 'RFC2256: organizational unit this object belongs to'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.12 NAME 'title'
|
||||||
|
DESC 'RFC2256: title associated with the entity'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.13 NAME 'description'
|
||||||
|
# DESC 'RFC2256: descriptive information'
|
||||||
|
# EQUALITY caseIgnoreMatch
|
||||||
|
# SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
|
||||||
|
|
||||||
|
# Deprecated by enhancedSearchGuide
|
||||||
|
attributetype ( 2.5.4.14 NAME 'searchGuide'
|
||||||
|
DESC 'RFC2256: search guide, deprecated by enhancedSearchGuide'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.15 NAME 'businessCategory'
|
||||||
|
DESC 'RFC2256: business category'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.16 NAME 'postalAddress'
|
||||||
|
DESC 'RFC2256: postal address'
|
||||||
|
EQUALITY caseIgnoreListMatch
|
||||||
|
SUBSTR caseIgnoreListSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.17 NAME 'postalCode'
|
||||||
|
DESC 'RFC2256: postal code'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.18 NAME 'postOfficeBox'
|
||||||
|
DESC 'RFC2256: Post Office Box'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.19 NAME 'physicalDeliveryOfficeName'
|
||||||
|
DESC 'RFC2256: Physical Delivery Office Name'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.20 NAME 'telephoneNumber'
|
||||||
|
DESC 'RFC2256: Telephone Number'
|
||||||
|
EQUALITY telephoneNumberMatch
|
||||||
|
SUBSTR telephoneNumberSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.21 NAME 'telexNumber'
|
||||||
|
DESC 'RFC2256: Telex Number'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.22 NAME 'teletexTerminalIdentifier'
|
||||||
|
DESC 'RFC2256: Teletex Terminal Identifier'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' )
|
||||||
|
DESC 'RFC2256: Facsimile (Fax) Telephone Number'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.24 NAME 'x121Address'
|
||||||
|
DESC 'RFC2256: X.121 Address'
|
||||||
|
EQUALITY numericStringMatch
|
||||||
|
SUBSTR numericStringSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.25 NAME 'internationaliSDNNumber'
|
||||||
|
DESC 'RFC2256: international ISDN number'
|
||||||
|
EQUALITY numericStringMatch
|
||||||
|
SUBSTR numericStringSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.26 NAME 'registeredAddress'
|
||||||
|
DESC 'RFC2256: registered postal address'
|
||||||
|
SUP postalAddress
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.27 NAME 'destinationIndicator'
|
||||||
|
DESC 'RFC2256: destination indicator'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.28 NAME 'preferredDeliveryMethod'
|
||||||
|
DESC 'RFC2256: preferred delivery method'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.14
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.29 NAME 'presentationAddress'
|
||||||
|
DESC 'RFC2256: presentation address'
|
||||||
|
EQUALITY presentationAddressMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.43
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.30 NAME 'supportedApplicationContext'
|
||||||
|
DESC 'RFC2256: supported application context'
|
||||||
|
EQUALITY objectIdentifierMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.31 NAME 'member'
|
||||||
|
DESC 'RFC2256: member of a group'
|
||||||
|
SUP distinguishedName )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.32 NAME 'owner'
|
||||||
|
DESC 'RFC2256: owner (of the object)'
|
||||||
|
SUP distinguishedName )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.33 NAME 'roleOccupant'
|
||||||
|
DESC 'RFC2256: occupant of role'
|
||||||
|
SUP distinguishedName )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.34 NAME 'seeAlso'
|
||||||
|
# DESC 'RFC2256: DN of related object'
|
||||||
|
# SUP distinguishedName )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.35 NAME 'userPassword'
|
||||||
|
# DESC 'RFC2256/2307: password of user'
|
||||||
|
# EQUALITY octetStringMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )
|
||||||
|
|
||||||
|
# Must be transferred using ;binary
|
||||||
|
# with certificateExactMatch rule (per X.509)
|
||||||
|
attributetype ( 2.5.4.36 NAME 'userCertificate'
|
||||||
|
DESC 'RFC2256: X.509 user certificate, use ;binary'
|
||||||
|
EQUALITY certificateExactMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
|
||||||
|
|
||||||
|
# Must be transferred using ;binary
|
||||||
|
# with certificateExactMatch rule (per X.509)
|
||||||
|
attributetype ( 2.5.4.37 NAME 'cACertificate'
|
||||||
|
DESC 'RFC2256: X.509 CA certificate, use ;binary'
|
||||||
|
EQUALITY certificateExactMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
|
||||||
|
|
||||||
|
# Must be transferred using ;binary
|
||||||
|
attributetype ( 2.5.4.38 NAME 'authorityRevocationList'
|
||||||
|
DESC 'RFC2256: X.509 authority revocation list, use ;binary'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
|
||||||
|
|
||||||
|
# Must be transferred using ;binary
|
||||||
|
attributetype ( 2.5.4.39 NAME 'certificateRevocationList'
|
||||||
|
DESC 'RFC2256: X.509 certificate revocation list, use ;binary'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
|
||||||
|
|
||||||
|
# Must be stored and requested in the binary form
|
||||||
|
attributetype ( 2.5.4.40 NAME 'crossCertificatePair'
|
||||||
|
DESC 'RFC2256: X.509 cross certificate pair, use ;binary'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.41 NAME 'name'
|
||||||
|
# EQUALITY caseIgnoreMatch
|
||||||
|
# SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
|
||||||
|
DESC 'RFC2256: first name(s) for which the entity is known by'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.43 NAME 'initials'
|
||||||
|
DESC 'RFC2256: initials of some or all of names, but not the surname(s).'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.44 NAME 'generationQualifier'
|
||||||
|
DESC 'RFC2256: name qualifier indicating a generation'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.45 NAME 'x500UniqueIdentifier'
|
||||||
|
DESC 'RFC2256: X.500 unique identifier'
|
||||||
|
EQUALITY bitStringMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.46 NAME 'dnQualifier'
|
||||||
|
DESC 'RFC2256: DN qualifier'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
ORDERING caseIgnoreOrderingMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.47 NAME 'enhancedSearchGuide'
|
||||||
|
DESC 'RFC2256: enhanced search guide'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.48 NAME 'protocolInformation'
|
||||||
|
DESC 'RFC2256: protocol information'
|
||||||
|
EQUALITY protocolInformationMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 2.5.4.49 NAME 'distinguishedName'
|
||||||
|
# EQUALITY distinguishedNameMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.50 NAME 'uniqueMember'
|
||||||
|
DESC 'RFC2256: unique member of a group'
|
||||||
|
EQUALITY uniqueMemberMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.51 NAME 'houseIdentifier'
|
||||||
|
DESC 'RFC2256: house identifier'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
|
||||||
|
|
||||||
|
# Must be transferred using ;binary
|
||||||
|
attributetype ( 2.5.4.52 NAME 'supportedAlgorithms'
|
||||||
|
DESC 'RFC2256: supported algorithms'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
|
||||||
|
|
||||||
|
# Must be transferred using ;binary
|
||||||
|
attributetype ( 2.5.4.53 NAME 'deltaRevocationList'
|
||||||
|
DESC 'RFC2256: delta revocation list; use ;binary'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.54 NAME 'dmdName'
|
||||||
|
DESC 'RFC2256: name of DMD'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 2.5.4.65 NAME 'pseudonym'
|
||||||
|
DESC 'X.520(4th): pseudonym for the object'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
# Standard object classes from RFC2256
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#objectclass ( 2.5.6.0 NAME 'top'
|
||||||
|
# DESC 'RFC2256: top of the superclass chain'
|
||||||
|
# ABSTRACT
|
||||||
|
# MUST objectClass )
|
||||||
|
|
||||||
|
# system schema
|
||||||
|
#objectclass ( 2.5.6.1 NAME 'alias'
|
||||||
|
# DESC 'RFC2256: an alias'
|
||||||
|
# SUP top STRUCTURAL
|
||||||
|
# MUST aliasedObjectName )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.2 NAME 'country'
|
||||||
|
DESC 'RFC2256: a country'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST c
|
||||||
|
MAY ( searchGuide $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.3 NAME 'locality'
|
||||||
|
DESC 'RFC2256: a locality'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MAY ( street $ seeAlso $ searchGuide $ st $ l $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.4 NAME 'organization'
|
||||||
|
DESC 'RFC2256: an organization'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST o
|
||||||
|
MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
|
||||||
|
x121Address $ registeredAddress $ destinationIndicator $
|
||||||
|
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
|
||||||
|
telephoneNumber $ internationaliSDNNumber $
|
||||||
|
facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
|
||||||
|
postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.5 NAME 'organizationalUnit'
|
||||||
|
DESC 'RFC2256: an organizational unit'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ou
|
||||||
|
MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
|
||||||
|
x121Address $ registeredAddress $ destinationIndicator $
|
||||||
|
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
|
||||||
|
telephoneNumber $ internationaliSDNNumber $
|
||||||
|
facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
|
||||||
|
postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.6 NAME 'person'
|
||||||
|
DESC 'RFC2256: a person'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( sn $ cn )
|
||||||
|
MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.7 NAME 'organizationalPerson'
|
||||||
|
DESC 'RFC2256: an organizational person'
|
||||||
|
SUP person STRUCTURAL
|
||||||
|
MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $
|
||||||
|
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
|
||||||
|
telephoneNumber $ internationaliSDNNumber $
|
||||||
|
facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
|
||||||
|
postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.8 NAME 'organizationalRole'
|
||||||
|
DESC 'RFC2256: an organizational role'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST cn
|
||||||
|
MAY ( x121Address $ registeredAddress $ destinationIndicator $
|
||||||
|
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
|
||||||
|
telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
|
||||||
|
seeAlso $ roleOccupant $ preferredDeliveryMethod $ street $
|
||||||
|
postOfficeBox $ postalCode $ postalAddress $
|
||||||
|
physicalDeliveryOfficeName $ ou $ st $ l $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.9 NAME 'groupOfNames'
|
||||||
|
DESC 'RFC2256: a group of names (DNs)'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( member $ cn )
|
||||||
|
MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.10 NAME 'residentialPerson'
|
||||||
|
DESC 'RFC2256: an residential person'
|
||||||
|
SUP person STRUCTURAL
|
||||||
|
MUST l
|
||||||
|
MAY ( businessCategory $ x121Address $ registeredAddress $
|
||||||
|
destinationIndicator $ preferredDeliveryMethod $ telexNumber $
|
||||||
|
teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $
|
||||||
|
facsimileTelephoneNumber $ preferredDeliveryMethod $ street $
|
||||||
|
postOfficeBox $ postalCode $ postalAddress $
|
||||||
|
physicalDeliveryOfficeName $ st $ l ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.11 NAME 'applicationProcess'
|
||||||
|
DESC 'RFC2256: an application process'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST cn
|
||||||
|
MAY ( seeAlso $ ou $ l $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.12 NAME 'applicationEntity'
|
||||||
|
DESC 'RFC2256: an application entity'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( presentationAddress $ cn )
|
||||||
|
MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $
|
||||||
|
description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.13 NAME 'dSA'
|
||||||
|
DESC 'RFC2256: a directory system agent (a server)'
|
||||||
|
SUP applicationEntity STRUCTURAL
|
||||||
|
MAY knowledgeInformation )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.14 NAME 'device'
|
||||||
|
DESC 'RFC2256: a device'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST cn
|
||||||
|
MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.15 NAME 'strongAuthenticationUser'
|
||||||
|
DESC 'RFC2256: a strong authentication user'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MUST userCertificate )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.16 NAME 'certificationAuthority'
|
||||||
|
DESC 'RFC2256: a certificate authority'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MUST ( authorityRevocationList $ certificateRevocationList $
|
||||||
|
cACertificate ) MAY crossCertificatePair )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.17 NAME 'groupOfUniqueNames'
|
||||||
|
DESC 'RFC2256: a group of unique names (DN and Unique Identifier)'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( uniqueMember $ cn )
|
||||||
|
MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.18 NAME 'userSecurityInformation'
|
||||||
|
DESC 'RFC2256: a user security information'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY ( supportedAlgorithms ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.16.2 NAME 'certificationAuthority-V2'
|
||||||
|
SUP certificationAuthority
|
||||||
|
AUXILIARY MAY ( deltaRevocationList ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.19 NAME 'cRLDistributionPoint'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( cn )
|
||||||
|
MAY ( certificateRevocationList $ authorityRevocationList $
|
||||||
|
deltaRevocationList ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.20 NAME 'dmd'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( dmdName )
|
||||||
|
MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
|
||||||
|
x121Address $ registeredAddress $ destinationIndicator $
|
||||||
|
preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
|
||||||
|
telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
|
||||||
|
street $ postOfficeBox $ postalCode $ postalAddress $
|
||||||
|
physicalDeliveryOfficeName $ st $ l $ description ) )
|
||||||
|
|
||||||
|
#
|
||||||
|
# Object Classes from RFC 2587
|
||||||
|
#
|
||||||
|
objectclass ( 2.5.6.21 NAME 'pkiUser'
|
||||||
|
DESC 'RFC2587: a PKI user'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY userCertificate )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.22 NAME 'pkiCA'
|
||||||
|
DESC 'RFC2587: PKI certificate authority'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY ( authorityRevocationList $ certificateRevocationList $
|
||||||
|
cACertificate $ crossCertificatePair ) )
|
||||||
|
|
||||||
|
objectclass ( 2.5.6.23 NAME 'deltaCRL'
|
||||||
|
DESC 'RFC2587: PKI user'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY deltaRevocationList )
|
||||||
|
|
||||||
|
#
|
||||||
|
# Standard Track URI label schema from RFC 2079
|
||||||
|
# system schema
|
||||||
|
#attributetype ( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI'
|
||||||
|
# DESC 'RFC2079: Uniform Resource Identifier with optional label'
|
||||||
|
# EQUALITY caseExactMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject'
|
||||||
|
DESC 'RFC2079: object that contains the URI attribute type'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY ( labeledURI ) )
|
||||||
|
|
||||||
|
#
|
||||||
|
# Derived from RFC 1274, but with new "short names"
|
||||||
|
#
|
||||||
|
#attributetype ( 0.9.2342.19200300.100.1.1
|
||||||
|
# NAME ( 'uid' 'userid' )
|
||||||
|
# DESC 'RFC1274: user identifier'
|
||||||
|
# EQUALITY caseIgnoreMatch
|
||||||
|
# SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
|
||||||
|
|
||||||
|
attributetype ( 0.9.2342.19200300.100.1.3
|
||||||
|
NAME ( 'mail' 'rfc822Mailbox' )
|
||||||
|
DESC 'RFC1274: RFC822 Mailbox'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
|
||||||
|
|
||||||
|
objectclass ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'
|
||||||
|
DESC 'RFC1274: simple security object'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MUST userPassword )
|
||||||
|
|
||||||
|
# RFC 1274 + RFC 2247
|
||||||
|
attributetype ( 0.9.2342.19200300.100.1.25
|
||||||
|
NAME ( 'dc' 'domainComponent' )
|
||||||
|
DESC 'RFC1274/2247: domain component'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
|
||||||
|
|
||||||
|
# RFC 2247
|
||||||
|
objectclass ( 1.3.6.1.4.1.1466.344 NAME 'dcObject'
|
||||||
|
DESC 'RFC2247: domain component object'
|
||||||
|
SUP top AUXILIARY MUST dc )
|
||||||
|
|
||||||
|
# RFC 2377
|
||||||
|
objectclass ( 1.3.6.1.1.3.1 NAME 'uidObject'
|
||||||
|
DESC 'RFC2377: uid object'
|
||||||
|
SUP top AUXILIARY MUST uid )
|
||||||
|
|
||||||
|
# RFC 4524
|
||||||
|
# The 'associatedDomain' attribute specifies DNS [RFC1034][RFC2181]
|
||||||
|
# host names [RFC1123] that are associated with an object. That is,
|
||||||
|
# values of this attribute should conform to the following ABNF:
|
||||||
|
#
|
||||||
|
# domain = root / label *( DOT label )
|
||||||
|
# root = SPACE
|
||||||
|
# label = LETDIG [ *61( LETDIG / HYPHEN ) LETDIG ]
|
||||||
|
# LETDIG = %x30-39 / %x41-5A / %x61-7A ; "0" - "9" / "A"-"Z" / "a"-"z"
|
||||||
|
# SPACE = %x20 ; space (" ")
|
||||||
|
# HYPHEN = %x2D ; hyphen ("-")
|
||||||
|
# DOT = %x2E ; period (".")
|
||||||
|
attributetype ( 0.9.2342.19200300.100.1.37
|
||||||
|
NAME 'associatedDomain'
|
||||||
|
DESC 'RFC1274: domain associated with object'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||||
|
|
||||||
|
# RFC 2459 -- deprecated in favor of 'mail' (in cosine.schema)
|
||||||
|
attributetype ( 1.2.840.113549.1.9.1
|
||||||
|
NAME ( 'email' 'emailAddress' 'pkcs9email' )
|
||||||
|
DESC 'RFC3280: legacy attribute for email addresses in DNs'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
|
||||||
|
|
2571
connector/ldap/testdata/cosine.schema
vendored
Normal file
2571
connector/ldap/testdata/cosine.schema
vendored
Normal file
File diff suppressed because it is too large
Load Diff
155
connector/ldap/testdata/inetorgperson.schema
vendored
Normal file
155
connector/ldap/testdata/inetorgperson.schema
vendored
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
# inetorgperson.schema -- InetOrgPerson (RFC2798)
|
||||||
|
# $OpenLDAP$
|
||||||
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
||||||
|
##
|
||||||
|
## Copyright 1998-2016 The OpenLDAP Foundation.
|
||||||
|
## All rights reserved.
|
||||||
|
##
|
||||||
|
## Redistribution and use in source and binary forms, with or without
|
||||||
|
## modification, are permitted only as authorized by the OpenLDAP
|
||||||
|
## Public License.
|
||||||
|
##
|
||||||
|
## A copy of this license is available in the file LICENSE in the
|
||||||
|
## top-level directory of the distribution or, alternatively, at
|
||||||
|
## <http://www.OpenLDAP.org/license.html>.
|
||||||
|
#
|
||||||
|
# InetOrgPerson (RFC2798)
|
||||||
|
#
|
||||||
|
# Depends upon
|
||||||
|
# Definition of an X.500 Attribute Type and an Object Class to Hold
|
||||||
|
# Uniform Resource Identifiers (URIs) [RFC2079]
|
||||||
|
# (core.schema)
|
||||||
|
#
|
||||||
|
# A Summary of the X.500(96) User Schema for use with LDAPv3 [RFC2256]
|
||||||
|
# (core.schema)
|
||||||
|
#
|
||||||
|
# The COSINE and Internet X.500 Schema [RFC1274] (cosine.schema)
|
||||||
|
|
||||||
|
# carLicense
|
||||||
|
# This multivalued field is used to record the values of the license or
|
||||||
|
# registration plate associated with an individual.
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.1
|
||||||
|
NAME 'carLicense'
|
||||||
|
DESC 'RFC2798: vehicle license or registration plate'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||||
|
|
||||||
|
# departmentNumber
|
||||||
|
# Code for department to which a person belongs. This can also be
|
||||||
|
# strictly numeric (e.g., 1234) or alphanumeric (e.g., ABC/123).
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.2
|
||||||
|
NAME 'departmentNumber'
|
||||||
|
DESC 'RFC2798: identifies a department within an organization'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||||
|
|
||||||
|
# displayName
|
||||||
|
# When displaying an entry, especially within a one-line summary list, it
|
||||||
|
# is useful to be able to identify a name to be used. Since other attri-
|
||||||
|
# bute types such as 'cn' are multivalued, an additional attribute type is
|
||||||
|
# needed. Display name is defined for this purpose.
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.241
|
||||||
|
NAME 'displayName'
|
||||||
|
DESC 'RFC2798: preferred name to be used when displaying entries'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
# employeeNumber
|
||||||
|
# Numeric or alphanumeric identifier assigned to a person, typically based
|
||||||
|
# on order of hire or association with an organization. Single valued.
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.3
|
||||||
|
NAME 'employeeNumber'
|
||||||
|
DESC 'RFC2798: numerically identifies an employee within an organization'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
# employeeType
|
||||||
|
# Used to identify the employer to employee relationship. Typical values
|
||||||
|
# used will be "Contractor", "Employee", "Intern", "Temp", "External", and
|
||||||
|
# "Unknown" but any value may be used.
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.4
|
||||||
|
NAME 'employeeType'
|
||||||
|
DESC 'RFC2798: type of employment for a person'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
|
||||||
|
|
||||||
|
# jpegPhoto
|
||||||
|
# Used to store one or more images of a person using the JPEG File
|
||||||
|
# Interchange Format [JFIF].
|
||||||
|
# Note that the jpegPhoto attribute type was defined for use in the
|
||||||
|
# Internet X.500 pilots but no referencable definition for it could be
|
||||||
|
# located.
|
||||||
|
attributetype ( 0.9.2342.19200300.100.1.60
|
||||||
|
NAME 'jpegPhoto'
|
||||||
|
DESC 'RFC2798: a JPEG image'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 )
|
||||||
|
|
||||||
|
# preferredLanguage
|
||||||
|
# Used to indicate an individual's preferred written or spoken
|
||||||
|
# language. This is useful for international correspondence or human-
|
||||||
|
# computer interaction. Values for this attribute type MUST conform to
|
||||||
|
# the definition of the Accept-Language header field defined in
|
||||||
|
# [RFC2068] with one exception: the sequence "Accept-Language" ":"
|
||||||
|
# should be omitted. This is a single valued attribute type.
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.39
|
||||||
|
NAME 'preferredLanguage'
|
||||||
|
DESC 'RFC2798: preferred written or spoken language for a person'
|
||||||
|
EQUALITY caseIgnoreMatch
|
||||||
|
SUBSTR caseIgnoreSubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
# userSMIMECertificate
|
||||||
|
# A PKCS#7 [RFC2315] SignedData, where the content that is signed is
|
||||||
|
# ignored by consumers of userSMIMECertificate values. It is
|
||||||
|
# recommended that values have a `contentType' of data with an absent
|
||||||
|
# `content' field. Values of this attribute contain a person's entire
|
||||||
|
# certificate chain and an smimeCapabilities field [RFC2633] that at a
|
||||||
|
# minimum describes their SMIME algorithm capabilities. Values for
|
||||||
|
# this attribute are to be stored and requested in binary form, as
|
||||||
|
# 'userSMIMECertificate;binary'. If available, this attribute is
|
||||||
|
# preferred over the userCertificate attribute for S/MIME applications.
|
||||||
|
## OpenLDAP note: ";binary" transfer should NOT be used as syntax is binary
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.40
|
||||||
|
NAME 'userSMIMECertificate'
|
||||||
|
DESC 'RFC2798: PKCS#7 SignedData used to support S/MIME'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )
|
||||||
|
|
||||||
|
# userPKCS12
|
||||||
|
# PKCS #12 [PKCS12] provides a format for exchange of personal identity
|
||||||
|
# information. When such information is stored in a directory service,
|
||||||
|
# the userPKCS12 attribute should be used. This attribute is to be stored
|
||||||
|
# and requested in binary form, as 'userPKCS12;binary'. The attribute
|
||||||
|
# values are PFX PDUs stored as binary data.
|
||||||
|
## OpenLDAP note: ";binary" transfer should NOT be used as syntax is binary
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.216
|
||||||
|
NAME 'userPKCS12'
|
||||||
|
DESC 'RFC2798: personal identity information, a PKCS #12 PFX'
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )
|
||||||
|
|
||||||
|
|
||||||
|
# inetOrgPerson
|
||||||
|
# The inetOrgPerson represents people who are associated with an
|
||||||
|
# organization in some way. It is a structural class and is derived
|
||||||
|
# from the organizationalPerson which is defined in X.521 [X521].
|
||||||
|
objectclass ( 2.16.840.1.113730.3.2.2
|
||||||
|
NAME 'inetOrgPerson'
|
||||||
|
DESC 'RFC2798: Internet Organizational Person'
|
||||||
|
SUP organizationalPerson
|
||||||
|
STRUCTURAL
|
||||||
|
MAY (
|
||||||
|
audio $ businessCategory $ carLicense $ departmentNumber $
|
||||||
|
displayName $ employeeNumber $ employeeType $ givenName $
|
||||||
|
homePhone $ homePostalAddress $ initials $ jpegPhoto $
|
||||||
|
labeledURI $ mail $ manager $ mobile $ o $ pager $
|
||||||
|
photo $ roomNumber $ secretary $ uid $ userCertificate $
|
||||||
|
x500uniqueIdentifier $ preferredLanguage $
|
||||||
|
userSMIMECertificate $ userPKCS12 )
|
||||||
|
)
|
75
connector/ldap/testdata/misc.schema
vendored
Normal file
75
connector/ldap/testdata/misc.schema
vendored
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# misc.schema -- assorted schema definitions
|
||||||
|
# $OpenLDAP$
|
||||||
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
||||||
|
##
|
||||||
|
## Copyright 1998-2016 The OpenLDAP Foundation.
|
||||||
|
## All rights reserved.
|
||||||
|
##
|
||||||
|
## Redistribution and use in source and binary forms, with or without
|
||||||
|
## modification, are permitted only as authorized by the OpenLDAP
|
||||||
|
## Public License.
|
||||||
|
##
|
||||||
|
## A copy of this license is available in the file LICENSE in the
|
||||||
|
## top-level directory of the distribution or, alternatively, at
|
||||||
|
## <http://www.OpenLDAP.org/license.html>.
|
||||||
|
#
|
||||||
|
# Assorted definitions from several sources, including
|
||||||
|
# ''works in progress''. Contents of this file are
|
||||||
|
# subject to change (including deletion) without notice.
|
||||||
|
#
|
||||||
|
# Not recommended for production use!
|
||||||
|
# Use with extreme caution!
|
||||||
|
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
# draft-lachman-laser-ldap-mail-routing-02.txt !!!EXPIRED!!!
|
||||||
|
# (a work in progress)
|
||||||
|
#
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.13
|
||||||
|
NAME 'mailLocalAddress'
|
||||||
|
DESC 'RFC822 email address of this recipient'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
|
||||||
|
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.18
|
||||||
|
NAME 'mailHost'
|
||||||
|
DESC 'FQDN of the SMTP/MTA of this recipient'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 2.16.840.1.113730.3.1.47
|
||||||
|
NAME 'mailRoutingAddress'
|
||||||
|
DESC 'RFC822 routing address of this recipient'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
|
||||||
|
SINGLE-VALUE )
|
||||||
|
|
||||||
|
# I-D leaves this OID TBD.
|
||||||
|
# iPlanet uses 2.16.840.1.113.730.3.2.147 but that is an
|
||||||
|
# improperly delegated OID. A typo is likely.
|
||||||
|
objectclass ( 2.16.840.1.113730.3.2.147
|
||||||
|
NAME 'inetLocalMailRecipient'
|
||||||
|
DESC 'Internet local mail recipient'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY ( mailLocalAddress $ mailHost $ mailRoutingAddress ) )
|
||||||
|
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
# draft-srivastava-ldap-mail-00.txt !!!EXPIRED!!!
|
||||||
|
# (a work in progress)
|
||||||
|
#
|
||||||
|
attributetype ( 1.3.6.1.4.1.42.2.27.2.1.15
|
||||||
|
NAME 'rfc822MailMember'
|
||||||
|
DESC 'rfc822 mail address of group member(s)'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||||
|
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
# !!!no I-D!!!
|
||||||
|
# (a work in progress)
|
||||||
|
#
|
||||||
|
objectclass ( 1.3.6.1.4.1.42.2.27.1.2.5
|
||||||
|
NAME 'nisMailAlias'
|
||||||
|
DESC 'NIS mail alias'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST cn
|
||||||
|
MAY rfc822MailMember )
|
237
connector/ldap/testdata/nis.schema
vendored
Normal file
237
connector/ldap/testdata/nis.schema
vendored
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
# $OpenLDAP$
|
||||||
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
||||||
|
##
|
||||||
|
## Copyright 1998-2016 The OpenLDAP Foundation.
|
||||||
|
## All rights reserved.
|
||||||
|
##
|
||||||
|
## Redistribution and use in source and binary forms, with or without
|
||||||
|
## modification, are permitted only as authorized by the OpenLDAP
|
||||||
|
## Public License.
|
||||||
|
##
|
||||||
|
## A copy of this license is available in the file LICENSE in the
|
||||||
|
## top-level directory of the distribution or, alternatively, at
|
||||||
|
## <http://www.OpenLDAP.org/license.html>.
|
||||||
|
|
||||||
|
# Definitions from RFC2307 (Experimental)
|
||||||
|
# An Approach for Using LDAP as a Network Information Service
|
||||||
|
|
||||||
|
# Depends upon core.schema and cosine.schema
|
||||||
|
|
||||||
|
# Note: The definitions in RFC2307 are given in syntaxes closely related
|
||||||
|
# to those in RFC2252, however, some liberties are taken that are not
|
||||||
|
# supported by RFC2252. This file has been written following RFC2252
|
||||||
|
# strictly.
|
||||||
|
|
||||||
|
# OID Base is iso(1) org(3) dod(6) internet(1) directory(1) nisSchema(1).
|
||||||
|
# i.e. nisSchema in RFC2307 is 1.3.6.1.1.1
|
||||||
|
#
|
||||||
|
# Syntaxes are under 1.3.6.1.1.1.0 (two new syntaxes are defined)
|
||||||
|
# validaters for these syntaxes are incomplete, they only
|
||||||
|
# implement printable string validation (which is good as the
|
||||||
|
# common use of these syntaxes violates the specification).
|
||||||
|
# Attribute types are under 1.3.6.1.1.1.1
|
||||||
|
# Object classes are under 1.3.6.1.1.1.2
|
||||||
|
|
||||||
|
# Attribute Type Definitions
|
||||||
|
|
||||||
|
# builtin
|
||||||
|
#attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
|
||||||
|
# DESC 'An integer uniquely identifying a user in an administrative domain'
|
||||||
|
# EQUALITY integerMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
# builtin
|
||||||
|
#attributetype ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
|
||||||
|
# DESC 'An integer uniquely identifying a group in an administrative domain'
|
||||||
|
# EQUALITY integerMatch
|
||||||
|
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.2 NAME 'gecos'
|
||||||
|
DESC 'The GECOS field; the common name'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SUBSTR caseIgnoreIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
|
||||||
|
DESC 'The absolute path to the home directory'
|
||||||
|
EQUALITY caseExactIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.4 NAME 'loginShell'
|
||||||
|
DESC 'The path to the login shell'
|
||||||
|
EQUALITY caseExactIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.6 NAME 'shadowMin'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.7 NAME 'shadowMax'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.12 NAME 'memberUid'
|
||||||
|
EQUALITY caseExactIA5Match
|
||||||
|
SUBSTR caseExactIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup'
|
||||||
|
EQUALITY caseExactIA5Match
|
||||||
|
SUBSTR caseExactIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
|
||||||
|
DESC 'Netgroup triple'
|
||||||
|
SYNTAX 1.3.6.1.1.1.0.0 )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber'
|
||||||
|
EQUALITY integerMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber'
|
||||||
|
DESC 'IP address'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber'
|
||||||
|
DESC 'IP network'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber'
|
||||||
|
DESC 'IP netmask'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} SINGLE-VALUE )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.22 NAME 'macAddress'
|
||||||
|
DESC 'MAC address'
|
||||||
|
EQUALITY caseIgnoreIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.23 NAME 'bootParameter'
|
||||||
|
DESC 'rpc.bootparamd parameter'
|
||||||
|
SYNTAX 1.3.6.1.1.1.0.1 )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.24 NAME 'bootFile'
|
||||||
|
DESC 'Boot image name'
|
||||||
|
EQUALITY caseExactIA5Match
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.26 NAME 'nisMapName'
|
||||||
|
SUP name )
|
||||||
|
|
||||||
|
attributetype ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry'
|
||||||
|
EQUALITY caseExactIA5Match
|
||||||
|
SUBSTR caseExactIA5SubstringsMatch
|
||||||
|
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{1024} SINGLE-VALUE )
|
||||||
|
|
||||||
|
# Object Class Definitions
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount'
|
||||||
|
DESC 'Abstraction of an account with POSIX attributes'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
|
||||||
|
MAY ( userPassword $ loginShell $ gecos $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount'
|
||||||
|
DESC 'Additional attributes for shadow passwords'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MUST uid
|
||||||
|
MAY ( userPassword $ shadowLastChange $ shadowMin $
|
||||||
|
shadowMax $ shadowWarning $ shadowInactive $
|
||||||
|
shadowExpire $ shadowFlag $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.2 NAME 'posixGroup'
|
||||||
|
DESC 'Abstraction of a group of accounts'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( cn $ gidNumber )
|
||||||
|
MAY ( userPassword $ memberUid $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.3 NAME 'ipService'
|
||||||
|
DESC 'Abstraction an Internet Protocol service'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( cn $ ipServicePort $ ipServiceProtocol )
|
||||||
|
MAY ( description ) )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol'
|
||||||
|
DESC 'Abstraction of an IP protocol'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( cn $ ipProtocolNumber $ description )
|
||||||
|
MAY description )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.5 NAME 'oncRpc'
|
||||||
|
DESC 'Abstraction of an ONC/RPC binding'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( cn $ oncRpcNumber $ description )
|
||||||
|
MAY description )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.6 NAME 'ipHost'
|
||||||
|
DESC 'Abstraction of a host, an IP device'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MUST ( cn $ ipHostNumber )
|
||||||
|
MAY ( l $ description $ manager ) )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork'
|
||||||
|
DESC 'Abstraction of an IP network'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( cn $ ipNetworkNumber )
|
||||||
|
MAY ( ipNetmaskNumber $ l $ description $ manager ) )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup'
|
||||||
|
DESC 'Abstraction of a netgroup'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST cn
|
||||||
|
MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.9 NAME 'nisMap'
|
||||||
|
DESC 'A generic abstraction of a NIS map'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST nisMapName
|
||||||
|
MAY description )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.10 NAME 'nisObject'
|
||||||
|
DESC 'An entry in a NIS map'
|
||||||
|
SUP top STRUCTURAL
|
||||||
|
MUST ( cn $ nisMapEntry $ nisMapName )
|
||||||
|
MAY description )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device'
|
||||||
|
DESC 'A device with a MAC address'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY macAddress )
|
||||||
|
|
||||||
|
objectclass ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice'
|
||||||
|
DESC 'A device with boot parameters'
|
||||||
|
SUP top AUXILIARY
|
||||||
|
MAY ( bootFile $ bootParameter ) )
|
54
connector/ldap/testdata/openldap.schema
vendored
Normal file
54
connector/ldap/testdata/openldap.schema
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# $OpenLDAP$
|
||||||
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
||||||
|
##
|
||||||
|
## Copyright 1998-2016 The OpenLDAP Foundation.
|
||||||
|
## All rights reserved.
|
||||||
|
##
|
||||||
|
## Redistribution and use in source and binary forms, with or without
|
||||||
|
## modification, are permitted only as authorized by the OpenLDAP
|
||||||
|
## Public License.
|
||||||
|
##
|
||||||
|
## A copy of this license is available in the file LICENSE in the
|
||||||
|
## top-level directory of the distribution or, alternatively, at
|
||||||
|
## <http://www.OpenLDAP.org/license.html>.
|
||||||
|
|
||||||
|
#
|
||||||
|
# OpenLDAP Project's directory schema items
|
||||||
|
#
|
||||||
|
# depends upon:
|
||||||
|
# core.schema
|
||||||
|
# cosine.schema
|
||||||
|
# inetorgperson.schema
|
||||||
|
#
|
||||||
|
# These are provided for informational purposes only.
|
||||||
|
|
||||||
|
objectIdentifier OpenLDAProot 1.3.6.1.4.1.4203
|
||||||
|
|
||||||
|
objectIdentifier OpenLDAP OpenLDAProot:1
|
||||||
|
objectIdentifier OpenLDAPattributeType OpenLDAP:3
|
||||||
|
objectIdentifier OpenLDAPobjectClass OpenLDAP:4
|
||||||
|
|
||||||
|
objectClass ( OpenLDAPobjectClass:3
|
||||||
|
NAME 'OpenLDAPorg'
|
||||||
|
DESC 'OpenLDAP Organizational Object'
|
||||||
|
SUP organization
|
||||||
|
MAY ( buildingName $ displayName $ labeledURI ) )
|
||||||
|
|
||||||
|
objectClass ( OpenLDAPobjectClass:4
|
||||||
|
NAME 'OpenLDAPou'
|
||||||
|
DESC 'OpenLDAP Organizational Unit Object'
|
||||||
|
SUP organizationalUnit
|
||||||
|
MAY ( buildingName $ displayName $ labeledURI $ o ) )
|
||||||
|
|
||||||
|
objectClass ( OpenLDAPobjectClass:5
|
||||||
|
NAME 'OpenLDAPperson'
|
||||||
|
DESC 'OpenLDAP Person'
|
||||||
|
SUP ( pilotPerson $ inetOrgPerson )
|
||||||
|
MUST ( uid $ cn )
|
||||||
|
MAY ( givenName $ labeledURI $ o ) )
|
||||||
|
|
||||||
|
objectClass ( OpenLDAPobjectClass:6
|
||||||
|
NAME 'OpenLDAPdisplayableObject'
|
||||||
|
DESC 'OpenLDAP Displayable Object'
|
||||||
|
AUXILIARY
|
||||||
|
MAY displayName )
|
Reference in New Issue
Block a user