lucas theisen created DIRSERVER-2087:
----------------------------------------
Summary: Not all policy state attributes get added to
PWD_POLICY_STATE_ATTRIBUTE_TYPES
Key: DIRSERVER-2087
URL: https://issues.apache.org/jira/browse/DIRSERVER-2087
Project: Directory ApacheDS
Issue Type: Bug
Reporter: lucas theisen
Priority: Critical
Specifically, only:
{code:java|title=org.apache.directory.server.core.authn.AuthenticationInterceptor.java}
/**
* Initialize the PasswordPolicy attributeTypes
*
* @throws LdapException If the initialization failed
*/
public void loadPwdPolicyStateAttributeTypes() throws LdapException
{
AT_PWD_RESET = schemaManager.lookupAttributeTypeRegistry( PWD_RESET_AT
);
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add( AT_PWD_RESET );
AT_PWD_CHANGED_TIME = schemaManager.lookupAttributeTypeRegistry(
PWD_CHANGED_TIME_AT );
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add( AT_PWD_CHANGED_TIME );
AT_PWD_HISTORY = schemaManager.lookupAttributeTypeRegistry(
PWD_HISTORY_AT );
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add( AT_PWD_HISTORY );
AT_PWD_FAILURE_TIME = schemaManager.lookupAttributeTypeRegistry(
PWD_FAILURE_TIME_AT );
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add( AT_PWD_FAILURE_TIME );
AT_PWD_ACCOUNT_LOCKED_TIME = schemaManager.lookupAttributeTypeRegistry(
PWD_ACCOUNT_LOCKED_TIME_AT );
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add( AT_PWD_ACCOUNT_LOCKED_TIME );
AT_PWD_LAST_SUCCESS = schemaManager.lookupAttributeTypeRegistry(
PWD_LAST_SUCCESS_AT );
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add( AT_PWD_LAST_SUCCESS );
AT_PWD_GRACE_USE_TIME = schemaManager.lookupAttributeTypeRegistry(
PWD_GRACE_USE_TIME_AT );
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add( AT_PWD_GRACE_USE_TIME );
PWD_POLICY_STATE_ATTRIBUTE_TYPES.add(
schemaManager.lookupAttributeTypeRegistry( PWD_POLICY_SUBENTRY_AT ) );
}
{code}
Leaving out {{pwdPolicySubentry, pwdStartTime, pwdEndTime, pwdLastSuccess}}.
This is important because the {{SchemaInterceptor}} prevents modification of
operational attributes that are _NOT_ in this list:
{code:java|title=org.apache.directory.server.core.schema.SchemaInterceptor.java}
else if( ( !attributeType.equals( MODIFIERS_NAME_AT )
&& ( !attributeType.equals( MODIFY_TIMESTAMP_AT ) )
&& ( !attributeType.equals( ENTRY_CSN_AT ) )
&& ( !PWD_POLICY_STATE_ATTRIBUTE_TYPES.contains(
attributeType ) ) ) )
{
String msg = I18n.err( I18n.ERR_52, attributeType );
LOG.error( msg );
throw new LdapNoPermissionException( msg );
}
{code}
As for {{pwdPolicySubentry, pwdLastSuccess}}, i'm not sure if they should be
allowed, but the other two, {{pwdStartTime, pwdEndTime}}, do need to be
modifiable.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)