<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
There appears to be only one case where NAME_EXP is returned: when the client.expiration field is passed (not client.pw_expiration)<br><br>
I think "expiration" must equate to the "principal expiration" in IPA. But only regular password expiry would give you the option of changing it.<br>
<br>
</blockquote><div><br></div><div>Thanks Brian. Can you explain a bit more ? When is principal expiration triggered ? I haven't set it explicitly for any user, and ipa user-show doesn't show that attribute either. I'm not very familiar with kerberos. And as you and David said earlier, if the principal expires, kinit shouldn't work either, right ?</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Regards,<br>
<br>
Brian.<br>
<br>
=== from src/kdc/kdc_util. c ===<br>
<br>
    /* The client must not be expired */<br>
    if (client.expiration && client.expiration < kdc_time) {<br>
        *status = "CLIENT EXPIRED";<br>
        if (vague_errors)<br>
            return(KRB_ERR_GENERIC);<br>
        else<br>
            return(KDC_ERR_NAME_EXP);<br>
    }<br>
<br>
    /* The client's password must not be expired, unless the server is<br>
       a KRB5_KDC_PWCHANGE_SERVICE. */<br>
    if (client.pw_expiration && client.pw_expiration < kdc_time &&<br>
        !isflagset(server.attributes, KRB5_KDB_PWCHANGE_SERVICE)) {<br>
        *status = "CLIENT KEY EXPIRED";<br>
        if (vague_errors)<br>
            return(KRB_ERR_GENERIC);<br>
        else<br>
            return(KDC_ERR_KEY_EXP);<br>
    }<br>
</blockquote></div><br></div></div>