freeipa/ipalib
Nathaniel McCallum e477130281 Fix login password expiration detection with OTP
The preexisting code would execute two steps. First, it would perform a kinit.
If the kinit failed, it would attempt to bind using the same credentials to
determine if the password were expired. While this method is fairly ugly, it
mostly worked in the past.

However, with OTP this breaks. This is because the OTP code is consumed by
the kinit step. But because the password is expired, the kinit step fails.
When the bind is executed, the OTP token is already consumed, so bind fails.
This causes all password expirations to be reported as invalid credentials.

After discussion with MIT, the best way to handle this case with the standard
tools is to set LC_ALL=C and check the output from the command. This
eliminates the bind step altogether. The end result is that OTP works and
all password failures are more performant.

https://fedorahosted.org/freeipa/ticket/4412

Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
2014-07-21 16:36:28 +02:00
..
plugins webui: custom attr in attributes widget 2014-07-21 10:47:06 +02:00
__init__.py ipalib.frontend: Do API version check before converting arguments 2014-06-13 14:15:06 +02:00
aci.py ipalib.aci: Fix bugs in comparison 2014-06-04 10:10:08 +02:00
backend.py Switch client to JSON-RPC 2013-11-26 16:59:59 +01:00
base.py Allow indexing API object types by class 2014-03-25 14:18:12 +01:00
capabilities.py dns_name_values capability added 2014-06-03 15:55:32 +02:00
cli.py CLI conversion of DNSName type 2014-06-03 15:55:32 +02:00
config.py Test and docstring fixes 2014-06-23 10:54:42 +02:00
constants.py ipaplatform: Move all filesystem paths to ipaplatform.paths module 2014-06-16 19:48:20 +02:00
crud.py Add optional_create flag 2013-10-08 16:46:20 +02:00
errors.py Fix login password expiration detection with OTP 2014-07-21 16:36:28 +02:00
frontend.py ipalib.frontend: Do API version check before converting arguments 2014-06-13 14:15:06 +02:00
krb_utils.py Pylint cleanup. 2013-01-29 15:39:49 +01:00
messages.py Add DNSSEC experimental support warning message 2014-07-03 10:32:09 +02:00
output.py Allow primary keys to use different type than unicode. 2014-04-18 14:59:20 +02:00
parameters.py Check normalization only for IDNA domains 2014-07-01 09:58:42 +02:00
pkcs10.py Support requests with SAN in cert-request. 2014-06-24 12:10:01 +02:00
plugable.py Add version and API version 2014-06-09 16:27:41 +02:00
request.py Remove deprecated i18n code from ipalib/request and all references to it. 2011-03-01 10:31:36 -05:00
rpc.py ipaplatform: Move all filesystem paths to ipaplatform.paths module 2014-06-16 19:48:20 +02:00
session.py ipaplatform: Move all filesystem paths to ipaplatform.paths module 2014-06-16 19:48:20 +02:00
text.py Add ConcatenatedLazyText object 2013-11-21 10:34:25 +01:00
util.py sudorule: Allow using hostmasks for setting allowed hosts 2014-06-25 20:14:49 +02:00
x509.py ipaplatform: Move all filesystem paths to ipaplatform.paths module 2014-06-16 19:48:20 +02:00