use of org.apache.directory.api.ldap.model.message.controls.ProxiedAuthz in project directory-ldap-api by apache.
the class ProxiedAuthzControlTest method testDecodeProxiedAuthzControlDnSuccess.
/**
* Test the decoding of a ProxiedAuthzControl with a DN user
*/
@Test
public void testDecodeProxiedAuthzControlDnSuccess() throws Exception {
ByteBuffer bb = ByteBuffer.allocate(0x14);
bb.put(new byte[] { // ProxiedAuthzNotification ::= dn:dc=example,dc=com
'd', 'n', ':', 'd', 'c', '=', 'e', 'x', 'a', 'm', 'p', 'l', 'e', ',', 'd', 'c', '=', 'c', 'o', 'm' });
bb.flip();
ProxiedAuthzDecorator decorator = new ProxiedAuthzDecorator(codec);
ProxiedAuthz proxiedAuthz = (ProxiedAuthz) decorator.decode(bb.array());
assertEquals("dn:dc=example,dc=com", proxiedAuthz.getAuthzId());
}
use of org.apache.directory.api.ldap.model.message.controls.ProxiedAuthz in project directory-fortress-core by apache.
the class LdapDataProvider method compareNode.
/**
* This method uses the compare ldap func to assert audit record into the directory server's configured audit
* logger.
*
* This is for one reason - to force the ldap server to maintain an audit trail on checkAccess api.
*
* Use proxy authz control (RFC4370) to assert the caller's id onto the record.
*
* @param connection is LdapConnection object used for all communication with host.
* @param dn contains address of distinguished name to begin ldap search
* @param userDn dn for user node
* @param attribute attribute used for compare
* @return true if compare operation succeeds
* @throws LdapException thrown in the event of error in ldap client or server code.
* @throws UnsupportedEncodingException in the event the server cannot perform the operation.
*/
protected boolean compareNode(LdapConnection connection, String dn, String userDn, Attribute attribute) throws LdapException, UnsupportedEncodingException {
COUNTERS.incrementCompare();
CompareRequest compareRequest = new CompareRequestImpl();
compareRequest.setName(new Dn(dn));
compareRequest.setAttributeId(attribute.getId());
compareRequest.setAssertionValue(attribute.getString());
// Assert the end user's dn onto the reqest using proxy authZ control so openldap can log who the user was (for authZ audit trail)
ProxiedAuthz proxiedAuthzControl = new ProxiedAuthzImpl();
proxiedAuthzControl.setAuthzId("dn: " + userDn);
compareRequest.addControl(proxiedAuthzControl);
CompareResponse response = connection.compare(compareRequest);
return response.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS;
}
Aggregations