Modificando o esquema OpenLDAP - Adicionando o atributo 'host' à objectclass 'person'

1

Temos um webapp customizado herdado que autentica usuários em um servidor OpenLDAP. Estamos tentando configurar outro servidor OpenLDAP separado para substituir o antigo, mas precisamos tornar o novo servidor OpenLDAP compatível com esse aplicativo legado. O aplicativo lê um atributo "host" dos atributos do usuário para obter o nível de permissões para o aplicativo.

Meu problema é que sempre que tento adicionar manualmente o atributo 'host' a qualquer 'pessoa' no novo diretório, recebo o erro: #! ERROR [LDAP: código de erro 65 - atributo 'host' não permitido].

Eu tentei o Apache DS, ldapvi, ldapmodify, etc para adicionar este atributo, mas não importa o que eu tente, diz que não é permitido.

Existe uma maneira fácil de adicionar este atributo 'host' já definido no co-seno. (ldif | schema) à classe de objeto 'person' definida no núcleo. (ldif | schema)? Sou relativamente novo no esquema do ldap e estou procurando o método mais curto e fácil disponível.

    
por Karl 03.02.2016 / 18:09

2 respostas

1

Eu criaria uma nova classe de objeto personalizada "MyCompanyPerson", definindo-a como derivada da pessoa e adicionando ou criando os atributos desejados. Isso soa como o que você quer?

EDITAR:

Não sou especialista mundial nisso, mas essa é uma versão anônima do que estou usando hoje. É irritante que não haja OIDs de uso local (não é possível que meu LDAP esteja conectado a outras pessoas), mas você pode solicitar seu próprio OID se quiser.

$ for i in * ; do echo ; echo $i ; echo ; cat $i | sed 's/^/    /' ; done

mycompany.conf

include /etc/openldap/schema/oidmacros
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/samba.schema
include /etc/openldap/schema/mycompany.schema

mycompany.schema

attributeType ( MyCompanyInternalTelephone-oid  NAME 'MyCompanyInternalTelephone'   DESC 'MyCompany Internal Telephone' EQUALITY telephoneNumberMatch   SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 SINGLE-VALUE X-ORIGIN 'Custom MyCompany Internal Telephone Directory' ) 
attributeType ( MyCompanyPhotoURL-oid   NAME 'MyCompanyPhotoURL'    DESC 'MyCompany Photo URL'  EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'Custom MyCompany Wiki' ) 
objectClass ( MyCompanyPerson-oid   NAME 'MyCompanyPerson'  DESC 'MyCompany Person' SUP ( inetOrgPerson ) STRUCTURAL MUST ( )
    MAY ( MyCompanyInternalTelephone $ MyCompanyPhotoURL $ sshPublicKey )
    X-ORIGIN 'Custom MyCompany Directory' ) 

oidmacros

# OID Macros
#
# Yellowbank's IANA Assigned OID for testing
objectIdentifier  MyCompany                       1.3.6.1.4.1.25948.1
objectIdentifier  MyCompanyAT                     MyCompany:1
objectIdentifier  MyCompanyOC                     MyCompany:2

objectIdentifier MyCompanyPhotoURL-oid  MyCompanyAT:100
objectIdentifier MyCompanyInternalTelephone-oid MyCompanyAT:101

objectIdentifier MyCompanyPerson-oid    MyCompanyOC:1

openssh.schema

# octetString SYNTAX
attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey' 
    DESC 'MANDATORY: OpenSSH Public key' 
    EQUALITY octetStringMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

# printableString SYNTAX yes|no
objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
    DESC 'MANDATORY: OpenSSH LPK objectclass'
    MAY ( sshPublicKey $ uid ) 
    )
    
por 03.02.2016 / 18:16
1

Você precisa incluir o ldapns.schema

include         /etc/openldap/schema/ldapns.schema

O esquema ldapns fornece uma objectClass auxiliar "hostObject". Se você adicionar isso a sua pessoa, o atributo "host" estará disponível.

    
por 21.03.2016 / 14:30