----- Original Message -----
> 
> 
> On 02/10/2016 02:34 PM, Alexander Bokovoy wrote:
> > On Wed, 10 Feb 2016, Pavel Reichl wrote:
> >>
> >>
> >> On 02/10/2016 11:46 AM, Alexander Bokovoy wrote:
> >>> On Wed, 10 Feb 2016, Pavel Reichl wrote:
> >>>>
> >>>>
> >>>> On 02/10/2016 11:06 AM, Alexander Bokovoy wrote:
> >>>>> On Wed, 10 Feb 2016, Pavel Reichl wrote:
> >>>>>>>> since getting those values requires to parse the string it would be
> >>>>>>>> nice
> >>>>>>>> to get some official details about the string.
> >>>>>>> Well, the string content after DSID-<number> mark can be completely
> >>>>>>> missing while the hex of the code (80090308) will be there.
> >>>>>>>
> >>>>>>> The presence of "DSID-<number> ..." error message is regulated by
> >>>>>>> ulHideDSID character of the dsHeuristics attribute (MS-ADTS
> >>>>>>> 6.1.1.2.4.1.2). So you can have Active Directory where DSID-<number>
> >>>>>>> string is completely missing but Win32 code for the error is there.
> >>>>>>>
> >>>>>>
> >>>>>> Alexander thanks for looking into this, but what we need is to
> >>>>>> distinguish between reasons for invalid credentials.
> >>>>>>
> >>>>>> e.g.
> >>>>>> Bind result: Invalid credentials(49), 80090308: LdapErr:
> >>>>>> DSID-0C0903C5, comment: AcceptSecurityContext error, data 773, v23f0
> >>>>>> Bind result: Invalid credentials(49), 80090308: LdapErr:
> >>>>>> DSID-0C0903C5, comment: AcceptSecurityContext error, data 775, v23f0
> >>>>> As I said, you should not rely on the information being available to
> >>>>> you
> >>>>> as it might be disabled completely by the AD administrators in
> >>>>> ndsHeuristics attribute.
> >>>>>
> >>>>> What are you going to do when ulHideDSID flag is set to 1?
> >>>> The ticket is about providing extra info to user if account is locked.
> >>>> If we can't decide, we return generic access denied and generic
> >>>> message. Best afford attitude is fine here...IMO.
> >>> That's fine but please add documentation about the behavior into the
> >>> commit message so that we would have this discussion recorded somehow.
> >>>
> >>
> >> OK, would this:
> >>
> >> """
> >> This patch is best effort only as decision whether account is actually
> >> locked is based on parsing error message returned by AD. The format and
> >> content of this error message might be subject of change in future
> >> releases and also can be modified by
> >> AD administrators.
> >> """
> >>
> >> appended to the commit message of the first patch work for you?
> > Please refer to specific parts of MS-ADTS I've mentioned.
> OK Alexander, would following work as commit message for you?
> 
> 
> 
> This patch is best effort only as decision whether account is actually locked
> is based on parsing error message returned by AD. The format and content of
> this error message might be subject of change in future releases and also
> can be modified by AD
> administrators.
> 
> If account is locked bind operation is expected to return following error
> message:
> 
> -------------------------------------------------------------------------
> Invalid credentials(49), 80090308: LdapErr: DSID-0C0903C5, comment:
> AcceptSecurityContext error, data 775, v23f0
> -------------------------------------------------------------------------
> 
> Where sub string 'data 775' implies that account is locked
> (ERROR_ACCOUNT_LOCKED_OUT) [1]. However the 80090308 (error code 0x80090308,
> SEC_E_INVALID_TOKEN) is the only guaranteed part of error string [2].
> 
> Error message is described in further detail as [3]:
> -------------------------------------------------------------------------
> When the server fails an LDAP operation with an error, and the server has
> sufficient resources to compute a string value for the errorMessage field of
> the LDAPResult, it includes a string in the errorMessage field of the
> LDAPResult (see [RFC2251]
> section 4.1.10). The string contains further information about the error.
> 
> The first eight characters of the errorMessage string are a 32-bit integer,
> expressed in hexadecimal. Where protocol specifies the extended error code
> "<unrestricted>" there is no restriction on the value of the 32-bit integer.
> It is recommended
> that implementations use a Windows error code for the 32-bit integer in this
> case in order to improve usability of the directory for clients.  Where
> protocol specifies an extended error code which is a Windows error code, the
> 32-bit integer is the
> specified Windows error code.  Any data after the eighth character is
> strictly informational and used only for debugging. Conformant
> implementations need not put any value beyond the eighth character of the
> errorMessage field.
> -------------------------------------------------------------------------
> 
> [1]
> https://msdn.microsoft.com/en-us/library/windows/desktop/ms681386%28v=vs.85%29.aspx
> [2]
> https://social.msdn.microsoft.com/Forums/en-US/e1d600c8-60b7-4ed0-94cb-20ddd6c1a1c6/msadts-user-locking-password-policies?forum=os_windowsprotocols
> [3] MS-ADTS 3.1.1.3.1.9
> https://msdn.microsoft.com/en-us/library/cc223253.aspx
Pavel, this is great!

Thank you!

-- 
/ Alexander Bokovoy
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to