When setting up pass through authentication, you need to know to which remote server or servers to redirect binds, and you need to know how you map user entries in OpenDJ to user entries in the remote directory.
Procedure 19.1. To Set Up SSL Communication For Testing
When performing pass through authentication, you no doubt protect communications between OpenDJ and the server providing authentication. If you test using SSL with self-signed certificates, and you do not want the client blindly to trust the server, follow these steps to import the authentication server's certificate into the OpenDJ key store.
-
Export the server certificate from the authentication server.
How you perform this step depends on the authentication directory server. With OpenDJ, you can export the certificate as shown here.
$ cd /path/to/PTA-Server/config $ keytool -exportcert -rfc -alias server-cert -keystore keystore -storepass `cat keystore.pin` > /tmp/pta-srv-cert.pem
-
Make note of the host name used in the certificate.
You use the host name when configuring the SSL connection. With OpenDJ, you can view the certificate details as shown here.
$ keytool -list -v -alias server-cert -keystore keystore -storepass `cat keystore.pin` Alias name: server-cert Creation date: Sep 12, 2011 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=pta-server.example.com, O=OpenDJ Self-Signed Certificate Issuer: CN=pta-server.example.com, O=OpenDJ Self-Signed Certificate Serial number: 4e6dc429 Valid from: Mon Sep 12 10:34:49 CEST 2011 until: Wed Sep 11 10:34:49 CEST 2013 Certificate fingerprints: MD5: B6:EE:1C:A0:71:12:EF:6F:21:24:B9:50:EF:8B:4E:6A SHA1: 7E:A1:C9:07:D2:86:56:31:24:14:F7:07:A8:6B:3E:A1:39:63:F4:0E Signature algorithm name: SHA1withRSA Version: 3
-
Import the authentication server certificate into OpenDJ's key store.
$ cd /path/to/opendj/config $ keytool -importcert -alias pta-cert -keystore truststore -storepass `cat keystore.pin` -file /tmp/pta-srv-cert.pem Owner: CN=pta-server.example.com, O=OpenDJ Self-Signed Certificate Issuer: CN=pta-server.example.com, O=OpenDJ Self-Signed Certificate Serial number: 4e6dc429 Valid from: Mon Sep 12 10:34:49 CEST 2011 until: Wed Sep 11 10:34:49 CEST 2013 Certificate fingerprints: MD5: B6:EE:1C:A0:71:12:EF:6F:21:24:B9:50:EF:8B:4E:6A SHA1: 7E:A1:C9:07:D2:86:56:31:24:14:F7:07:A8:6B:3E:A1:39:63:F4:0E Signature algorithm name: SHA1withRSA Version: 3 Trust this certificate? [no]: yes Certificate was added to keystore
Procedure 19.2. To Configure an LDAP Pass Through Authentication Policy
You configure authentication policies with the dsconfig command. Notice that authentication policies are part of the server configuration, and therefore not replicated.
-
Set up an authentication policy for pass through authentication to the authentication server.
$ dsconfig create-password-policy --port 4444 --hostname opendj.example.com --bindDN "cn=Directory Manager" --bindPassword password --type ldap-pass-through --policy-name "PTA Policy" --set primary-remote-ldap-server:pta-server.example.com:636 --set mapped-attribute:uid --set mapped-search-base-dn:"dc=PTA Server,dc=com" --set mapping-policy:mapped-search --set use-ssl:true --set trust-manager-provider:JKS --trustAll --no-prompt
The policy shown here maps identities having this password policy to identities under
dc=PTA Server,dc=com. Users must have the sameuidvalues on both servers. The policy here also uses SSL between OpenDJ and the authentication server. -
Check that your policy has been added to the list.
$ dsconfig list-password-policies --port 4444 --hostname opendj.example.com --bindDN "cn=Directory Manager" --bindPassword password --property use-ssl Password Policy : Type : use-ssl ------------------------:-------------------:-------- Default Password Policy : password-policy : - PTA Policy : ldap-pass-through : true Root Password Policy : password-policy : -
Procedure 19.3. To Configure Pass Through Authentication To Active Directory
The steps below demonstrate setting up pass through authentication to Active Directory. Here is some background to help you make sense of the steps.
Entries on the OpenDJ side use uid as the naming
attribute, and entries also have cn attributes. Active
Directory entries use cn as the naming attribute.
User entries on both sides share the same cn values. The
mapping between entries therefore uses cn.
Consider the example where an OpenDJ account with cn=LDAP
PTA User and DN
uid=ldapptauser,ou=People,dc=example,dc=com corresponds
to an Active Directory account with DN CN=LDAP PTA
User,CN=Users,DC=internal,DC=forgerock,DC=com. The steps below
enable the user with cn=LDAP PTA User on OpenDJ
authenticate through to Active Directory.
$ ldapsearch --hostname opendj.example.com --baseDN dc=example,dc=com uid=ldapptauser cn dn: uid=ldapptauser,ou=People,dc=example,dc=com cn: LDAP PTA User $ ldapsearch --hostname ad.example.com --baseDN "CN=Users,DC=internal,DC=forgerock,DC=com" --bindDN "cn=administrator,cn=Users,DC=internal,DC=forgerock,DC=com" --bindPassword password "(cn=LDAP PTA User)" cn dn: CN=LDAP PTA User,CN=Users,DC=internal,DC=forgerock,DC=com cn: LDAP PTA User
OpenDJ must map its
uid=ldapptauser,ou=People,dc=example,dc=com entry to the
Active Directory entry, CN=LDAP PTA
User,CN=Users,DC=internal,DC=forgerock,DC=com. In order to do the
mapping, OpenDJ has to perform a search for the user in Active Directory
using the cn value it recovers from its own entry for the
user. Active Directory does not allow anonymous searches, so part of the
authentication policy configuration consists of the administrator DN and
password OpenDJ uses to bind to Active Directory to be able to search.
Finally, before setting up the pass through authentication policy, make sure OpenDJ can connect to Active Directory over a secure connection to avoid sending passwords in the clear.
-
Export the certificate from the Windows server.
-
Click start > All Programs > Administrative Tools > Certification Authority, then right-click the CA and select Properties.
-
In the General tab, select the certificate and click View Certificate.
-
In the Certificate dialog, click the Details tab, then click Copy to File...
-
Use the Certificate Export Wizard to export the certificate into a file, such as
windows.cer.
-
-
Copy the exported certificate to the system running OpenDJ.
-
Import the server certificate into OpenDJ's key store.
$ cd /path/to/opendj/config $ keytool -importcert -alias ad-cert -keystore truststore -storepass `cat keystore.pin` -file ~/Downloads/windows.cer Owner: CN=internal-ACTIVEDIRECTORY-CA, DC=internal, DC=forgerock, DC=com Issuer: CN=internal-ACTIVEDIRECTORY-CA, DC=internal, DC=forgerock, DC=com Serial number: 587465257200a7b14a6976cb47916b32 Valid from: Tue Sep 20 11:14:24 CEST 2011 until: Tue Sep 20 11:24:23 CEST 2016 Certificate fingerprints: MD5: A3:D6:F1:8D:0D:F9:9C:76:00:BC:84:8A:14:55:28:38 SHA1: 0F:BD:45:E6:21:DF:BD:6A:CA:8A:7C:1D:F9:DA:A1:8E:8A:0D:A4:BF Signature algorithm name: SHA1withRSA Version: 3 Extensions: #1: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] #2: ObjectId: 2.5.29.15 Criticality=false KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ] #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: A3 3E C0 E3 B2 76 15 DC 97 D0 B3 C0 2E 77 8A 11 .>...v.......w.. 0010: 24 62 70 0A $bp. ] ] #4: ObjectId: 1.3.6.1.4.1.311.21.1 Criticality=false Trust this certificate? [no]: yes Certificate was added to keystore
At this point OpenDJ can connect to Active Directory over SSL.
-
Set up an authentication policy for OpenDJ users to authenticate to Active Directory.
$ dsconfig create-password-policy --port 4444 --hostname opendj.example.com --bindDN "cn=Directory Manager" --bindPassword password --type ldap-pass-through --policy-name "AD PTA Policy" --set primary-remote-ldap-server:ad.example.com:636 --set mapped-attribute:cn --set mapped-search-base-dn:"CN=Users,DC=internal,DC=forgerock,DC=com" --set mapped-search-bind-dn:"cn=administrator,cn=Users,DC=internal,DC=forgerock ,DC=com" --set mapped-search-bind-password:password --set mapping-policy:mapped-search --set trust-manager-provider:JKS --set use-ssl:true --trustAll --no-prompt
-
Assign the authentication policy to a test user.
$ ldapmodify --port 1389 --bindDN "cn=Directory Manager" --bindPassword password dn: uid=ldapptauser,ou=People,dc=example,dc=com changetype: modify add: ds-pwp-password-policy-dn ds-pwp-password-policy-dn: cn=AD PTA Policy,cn=Password Policies,cn=config Processing MODIFY request for uid=ldapptauser,ou=People,dc=example,dc=com MODIFY operation successful for DN uid=ldapptauser,ou=People,dc=example,dc=com
-
Check that the user can bind using pass through authentication to Active Directory.
$ ldapsearch --hostname opendj.example.com --port 1389 --baseDN dc=example,dc=com --bindDN uid=ldapptauser,ou=People,dc=example,dc=com --bindPassword password "(cn=LDAP PTA User)" userpassword cn dn: uid=ldapptauser,ou=People,dc=example,dc=com cn: LDAP PTA User
Notice that to complete the search, the user authenticated with a password to Active Directory, though no
userpasswordvalue is present on the entry on the OpenDJ side.

