LDAP (UID/PWD) - MC

Scenario
Note. This use case uses Management Center to add configuration. Note. This use case uses default configuration of Management Center, Fortified ID Portal is already added as an SAML SP to Access acting as the SAML IdP.
Below are two links if above text is not fulfilled:
In this use case Fortified ID Portal will act as an SAML SP and Fortified ID Access as SAML IdP. On the SAML IdP their will be one authentication method which is username and password. Username and password will be authenticated against an LDAP directory, in this use case we use an Active Directory.
Prerequisite
See above prerequisite in Scenario
Windows server
At least 16 GB of RAM
A server certificate so LDAPS is supported for Active Directory
Active Directory (e.g. installed in the same machine)
A number of user created.
Make sure all of them a mail attribute populated with an mail address.
Have some of the user being manager for others.
A number of groups created with some user added
Note. All configuration and testing is done on the scenario server.
Verify environment
Before you move on, verify that you can login to Fortified ID Portal using one of the (e.g. Peter Bishop) default user that comes with Fortified ID Access default configuration.
Add LDAP as authentication source
Add LDAP client modul
Login to Management Center for Access
Click Configuration tab
Expand Modules and click + to add new module
Click add LDAPClient
For values you can either add them directly in the LDAP module or the can use globals and have the values in Misc settings -> Globals. In this use case I add them directly in the module as below. Replace the values below to map your environment. Note. Do not change id and instance. For name you can use whatever you like but this is what you refer to later on in this use case so might want to leave it alone. Note2. Property name (in this case my_active_directory_name) is what you refer to in different valves.
{
"id": "ldapclient_0",
"name": "LdapClient",
"enabled": true,
"instances": 1,
"config": {
"name": "my_active_directory_name",
"connection": {
"host": "127.0.0.1",
"port": 636,
"bind_dn": "CN=admin,CN=Users,DC=company,DC=local",
"bind_password": "admin_password",
"use_ssl": true,
"ssl_trust_all": true
}
},
"display_name": "My Active Directory module"
}Deploy changes
Move on to next step
Add Username/Password authentication method
Click Configuration tab
Click Authentication Methods and +
Expand Credential Validators
Scroll down and click Add for validator User name & password
For values you can either add them directly in the LDAP module or the can use globals and have the values in Misc settings -> Globals. In this use case I add them directly in the module as below. Leave all values as they are.
{ "id": "usernameandpassword_1", "type": "UserNameAndPassword", "description": "Used to verify user credentials against one or more user stores.", "config": { "base_path": "${globals.default_login_suffix}", "pipe_id": "usernameandpassword_1_pipe" }, "display_name": "My Active Directory AuthN" }Deploy changes
Move on to next step
Add Credential validator to IdP default selector
Click Configuration tab
Expand SAML -> Default IdP -> Selector
On selector object, click OPTIONS tab
Click ADD OPTION and select the validator you just added, e.g. My Active Directory (usernameandpassword_1)
In Display Label type Active Directory
In Logo URL, type assets/svg/microsoft.svg
Click Update
Deploy changes
Move on to next step
Update pipe for credential validator
Click Configuration tab
Expand SAML -> Default IdP -> Selector -> UserNameAndPassword1
Click associated pipe, usernameandpassword_1_pipe
Remove all default valves
Add valve to search for user, LDAPSearch
Click + Add new valve
Add valve LDAPSearch
For values you can either add them directly in the LDAPSearch valve or you can use globals and have the values in Misc settings -> Globals. In this use case I add them directly in the module as below. Note! Property destination much map LDAP module property name (see above). This is how this valve knows which LDAP module to use.
{ "name": "LDAPSearch", "config": { "destination": "my_active_directory_name", "base_dn": "dn_to_your_users", "scope": "SUB", "filter": "mail=${request.identifier}", "attributes": [ { "name": "cn", "multivalue": false }, { "name": "mail", "multivalue": true } ], "expected_item_count": 1 } }
Click Update
Add valve to verify password LDAPBind
Click + Add new valve
Add valve LDAPBind
For values you can either add them directly in the LDAPSearch valve or you can use globals and have the values in Misc settings -> Globals. In this use case I add them directly in the module as below. Note! Property destination much map LDAP module property name (see above). This is how this valve knows which LDAP module to use.
{ "name": "LDAPBind", "config": { "destination": "my_active_directory", "dn": "${item.id}", "password": "${request.password}" } }
Click Update
Deploy changes
The result should look like:

Last updated