From 16a4c18b4c101e8e3dc7b8be756de1807970065f Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Thu, 19 Jul 2007 16:12:32 +0000
Subject: [PATCH] Update the server to provide more complete support for the password policy control as described in draft-behera-ldap-password-policy. In particular, improved support has been provided for all operations for the case in which a user must change his/her password before performing any other types of operations. These changes also provide enhanced support for add and modify operations that are rejected because a password change is not acceptable for some reason.
---
opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java | 96 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 88 insertions(+), 8 deletions(-)
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
index 6226046..4cf5799 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
@@ -1898,8 +1898,18 @@
new AddResponseProtocolOp(de.getResultCode().getIntValue(),
de.getErrorMessage(), de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = addOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
}
@@ -2014,8 +2024,18 @@
new BindResponseProtocolOp(de.getResultCode().getIntValue(),
de.getErrorMessage(), de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = bindOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
// If it was a protocol error, then terminate the connection.
if (de.getResultCode() == ResultCode.PROTOCOL_ERROR)
@@ -2086,8 +2106,18 @@
de.getErrorMessage(),
de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = compareOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
}
@@ -2147,8 +2177,18 @@
new DeleteResponseProtocolOp(de.getResultCode().getIntValue(),
de.getErrorMessage(), de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = deleteOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
}
@@ -2217,8 +2257,18 @@
de.getErrorMessage(),
de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = extendedOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
}
@@ -2278,8 +2328,18 @@
new ModifyResponseProtocolOp(de.getResultCode().getIntValue(),
de.getErrorMessage(), de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = modifyOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
}
@@ -2343,8 +2403,18 @@
de.getErrorMessage(),
de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = modifyDNOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
}
@@ -2410,8 +2480,18 @@
de.getErrorMessage(),
de.getMatchedDN(),
de.getReferralURLs());
+
+ List<Control> responseControls = searchOp.getResponseControls();
+ ArrayList<LDAPControl> responseLDAPControls =
+ new ArrayList<LDAPControl>(responseControls.size());
+ for (Control c : responseControls)
+ {
+ responseLDAPControls.add(new LDAPControl(c));
+ }
+
sendLDAPMessage(securityProvider,
- new LDAPMessage(message.getMessageID(), responseOp));
+ new LDAPMessage(message.getMessageID(), responseOp,
+ responseLDAPControls));
}
--
Gitblit v1.10.0