On Tue, Dec 02, 2014 at 09:12:25AM -0500, Nathaniel McCallum wrote:
> On Tue, 2014-12-02 at 10:22 +0100, Jakub Hrozek wrote:
> > On Mon, Dec 01, 2014 at 05:16:49PM -0500, Nathaniel McCallum wrote:
> > > On Mon, 2014-12-01 at 22:15 +0100, Jakub Hrozek wrote:
> > > > Hi,
> > > > 
> > > > the attached patch fixes chpass for OTP users for me. I hope looking at
> > > > the ipaUserAuthType attribute is acceptable.
> > > > 
> > > > The attribute is undocumented on purpose -- I don't see a reason for the
> > > > user to set this attribute to a different value and the desription would
> > > > just clutter the (already too complex) sssd-ldap man page.
> > > > 
> > > > I'm open to adding the attribute to the configAPI, though.
> > > 
> > > I'm very thankful for a quick fix!
> > > 
> > > I haven't tested it. However, part of me is loathe to special case OTP
> > > in this way. I admit, this case isn't bad.
> > 
> > I know, I'm not thrilled by the special-case either. One of the reasons
> > I CC-ed you directly was to get another opinion -- if there is another
> > way of fixing the bug, I'm all for it.
> > 
> > > But ipaUserAuthType does not
> > > technically indicate which method was used, only which methods are
> > > possible.
> > 
> > Right. Is there a way to see what method was used prior to actually
> > using the authtok? I know the conversation function returns an indicator
> > of OTP being used, but only after it was sent over the wire.
> 
> I'm pretty sure that krb5_child returns whether or not OTP was used
> during authentication.

Hmm, I don't have the backtrace right now, but I think the prompter is
invoked after krb5_get_init_creds_password() which is when we send the
authtoken...so at that point the OTP is already consumed.

> We implemented this feature so that password
> caches are invalidated.

Yep, the krb5_child returns "I used an OTP" to sssd_be so that sssd_be
doesn't cache the password. However, wasn't there a replay bug with
HOTPs in IPA that made this whole reuse possible?

> 
> > > For instance, if ipaUserAuthType == "otp" and "password", the
> > > user could use either one (not currently, but that is the plan).
> > 
> > Hm, are you sure we can't use either already? That's how it worked for
> > me during my testing.
> 
> It currently works for LDAP bind but not kinit. The reason is that MIT
> kerberos doesn't support preauth sets. We are instead designing a new
> preauth mech to handle this logic.
> 
> > > 
> > > It seems to me that reusing credentials is always wrong.
> > 
> > I can see why it's wrong with OTPs, but what's wrong about using a
> > long-term password twice in a row?
> 
> Nothing, if you can guarantee the credential is always a long-term
> password. It is this guarantee that I find difficult except in a narrow
> set of cases.

Yes, I agree we should refactor the chpass code, but I don't think it's
the right time now that the sssd-1-12 branch is already used by
downstreams. Let's plan this task as a high priority for the next
(sssd-1-13) release.

> 
> > > What is CHAUTHTOK anyway?
> > 
> > Change auth token. In SSSD we have this whole operation split into two
> > phases - SSS_PAM_CHAUTHTOK_PRELIM and SSS_PAM_CHAUTHTOK.
> > 
> > The former maps onto PAM subsystem's PAM_PRELIM_CHECK and its purpose is
> > to just try to acquire "kadmin/changepw" using the old password so that
> > in case the old password was expired or the user was locked out, he would
> > get a friendly error message back and the state of the sssd deamon or the
> > cached users are not changed in any way. If the SSS_PAM_CHAUTHTOK_PRELIM
> > succeeds, we then use the old password again to acquire the 
> > "kadmin/changepw"
> > principal which is then used when calling krb5_change_password().
> > 
> > I agree it would be ideal to keep around the creds for "kadmin/changepw"
> > somehow to avoid calling the same code twice, but currently that's not
> > possible, the krb5_child code is one-shot. In the next release, we could
> > either change the code to keep the child around, or maybe transfer the
> > "kadmin/changepw" credentials back to the caller in some encoding..but
> > I'm afraid that's out of scope for 7.1
> > 
> > Would you agree that we work on this issue along with the other problems
> > related to OTPs such as:
> >     https://fedorahosted.org/sssd/ticket/2335
> > and:
> >     https://fedorahosted.org/sssd/ticket/2278
> 
> Yup. Though functional password changes are high priority.

yes, but for 1.13...

Given the discussion, what changes do you propose to the patch to get it
merged to sssd-1-12 (aka master) ?
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to