Denise DeLassandros wants to set up an application that authenticates with X.509 client certificates. She can store the certificate of each user on the directory service as an attribute of the user account. When business users start the application and present their client certificate, the application grants access to the corresponding business user.
To enable the User Management Engine (UME) to search for and store these certificates, Denise must ensure that the corresponding attributes are mapped correctly in the data source configuration file.
If the LDAP is an IBM Tivoli LDAP, see SAP Note 1334567.
The table below lists the relevant logical attributes of a user account:
Relevant Logical Attributes of a User Account
Attribute | Description |
---|---|
certificatehash |
Hash value of the client certificate |
javax.servlet.request.X509Certificate |
Used to search for the directory service certificate |
certificate |
Used to store the directory service certificate |
To set up attribute mapping for client certificates, Denise must edit the following subsections of the directory service section of the data source configuration file:
Denise must add the attributes listed above to the <responsibleFor> subsection of the data source configuration file. Adding these attributes defines that these attributes are stored on the directory server.
Example: <responsibleFor> Subsection
<dataSource id="CORP_LDAP" className="com.sap.security.core.persistence.datasource.imp.LDAPPersistence" isReadonly="false" isPrimary="true"> … <responsibleFor> <principal type="account"> <nameSpace name="com.sap.security.core.usermanagement"> <attributes> … <attribute name="certificatehash"/> <attribute name="javax.servlet.request.X509Certificate"/> <attribute name="certificate"/> </attributes> </nameSpace> </principal> … </responsibleFor> … </dataSource>
Denise must map the logical attributes to the corresponding physical attributes in your directory service. These attributes are vendor-specific.
Denise must enter the name of the physical attribute in lower case letters! Otherwise the mapping does not work.
Example: <attributeMapping> Subsection
<dataSource id="CORP_LDAP" className="com.sap.security.core.persistence.datasource.imp.LDAPPersistence" isReadonly="false" isPrimary="true"> … <attributeMapping> <principals> <principal type="account"> <nameSpace name="com.sap.security.core.usermanagement"> <attributes> … <attribute name="certificatehash"> <physicalAttribute name="*null*"/> </attribute> <attribute name="javax.servlet.request.X509Certificate"> <physicalAttribute name="usercertificate"/> </attribute> <attribute name="certificate"> <physicalAttribute name="usercertificate"/> </attribute> </attributes> </nameSpace> </principal> … </principals> … </attributeMapping> … </dataSource>
The certificatehash attribute must be mapped to *null* , as directory servers cannot handle hashed certificates. This prevents the hash value from being stored.
You must map the logical attributes javax.servlet.request.X509Certificate and certificate to the same physical attribute on your directory server.