1*bf6873c5SCy Schubert pam-krb5 To-Do List 2*bf6873c5SCy Schubert 3*bf6873c5SCy SchubertPAM API: 4*bf6873c5SCy Schubert 5*bf6873c5SCy Schubert * Support PAM_CHANGE_EXPIRED_AUTHTOK properly in pam_chauthtok. This 6*bf6873c5SCy Schubert will require prompting for the current password (if it's not already 7*bf6873c5SCy Schubert available in the PAM data) and trying a regular authentication first to 8*bf6873c5SCy Schubert see if the account is expired. 9*bf6873c5SCy Schubert 10*bf6873c5SCy Schubert * Tighter verification that all of our flags are valid might be a good 11*bf6873c5SCy Schubert idea. 12*bf6873c5SCy Schubert 13*bf6873c5SCy Schubert * For informational messages followed by a prompt, find a way to combine 14*bf6873c5SCy Schubert these into one PAM conversation call for better GUI presentation 15*bf6873c5SCy Schubert behavior. 16*bf6873c5SCy Schubert 17*bf6873c5SCy SchubertFunctionality: 18*bf6873c5SCy Schubert 19*bf6873c5SCy Schubert * Change the authentication flow so that both Heimdal and MIT use the 20*bf6873c5SCy Schubert same logic for attempting PKINIT first and then falling back to 21*bf6873c5SCy Schubert password. This will fix failure to store passwords in the PAM data 22*bf6873c5SCy Schubert with try_pkinit and MIT Kerberos on password fallback and will allow 23*bf6873c5SCy Schubert implementation of use_pkinit for MIT. Based on discussion with MIT 24*bf6873c5SCy Schubert Kerberos upstream, the best approach is probably to configure a custom 25*bf6873c5SCy Schubert prompter that refuses to reply to any prompt. 26*bf6873c5SCy Schubert 27*bf6873c5SCy Schubert * Add a daemon that can be used to verify TGTs that can be used when 28*bf6873c5SCy Schubert pam-krb5 is run as a non-root user and hence doesn't have access to the 29*bf6873c5SCy Schubert system keytab. Jeff Hutzelman has a daemon and protocol for doing this 30*bf6873c5SCy Schubert developed for a different PAM authentication module, and it would be 31*bf6873c5SCy Schubert good to stay consistent with that protocol if possible. (Debian 32*bf6873c5SCy Schubert Bug#399001) 33*bf6873c5SCy Schubert 34*bf6873c5SCy Schubert * The alt_auth_map parsing to find realms doesn't take into account 35*bf6873c5SCy Schubert escaped @-signs and doesn't do proper principal parsing. 36*bf6873c5SCy Schubert 37*bf6873c5SCy Schubert * Fix password expiration handling for the search_k5login and 38*bf6873c5SCy Schubert alt_auth_map cases. Right now, we may return expired password errors 39*bf6873c5SCy Schubert that would trigger password expiration handling, which probably isn't 40*bf6873c5SCy Schubert correct. 41*bf6873c5SCy Schubert 42*bf6873c5SCy Schubert * Support authentication from a keytab. 43*bf6873c5SCy Schubert 44*bf6873c5SCy Schubert * Support disabling of user canonicalization so that the PAM user is 45*bf6873c5SCy Schubert retained even if the module did an aname to lname mapping. 46*bf6873c5SCy Schubert 47*bf6873c5SCy Schubert * Use set_out_ccache to write the resulting ticket cache, if it is 48*bf6873c5SCy Schubert available. This ensures the correct flags are set in the ticket cache. 49*bf6873c5SCy Schubert This poses some challenges due to the two-step ticket cache mechanism 50*bf6873c5SCy Schubert currently used. Perhaps there's a cache copying API? 51*bf6873c5SCy Schubert 52*bf6873c5SCy Schubert * Use krb5_chpw_message to parse password change messages from Active 53*bf6873c5SCy Schubert Directory. 54*bf6873c5SCy Schubert 55*bf6873c5SCy Schubert * Consider exposing the Kerberos principal in the password prompt for a 56*bf6873c5SCy Schubert password change. (Debian Bug#667928) 57*bf6873c5SCy Schubert 58*bf6873c5SCy SchubertCode Cleanup: 59*bf6873c5SCy Schubert 60*bf6873c5SCy Schubert * The PKINIT code for Heimdal involves too many #ifdefs right now for my 61*bf6873c5SCy Schubert taste. Find a way to restructure it to only wrap the main PKINIT 62*bf6873c5SCy Schubert function for Heimdal. 63*bf6873c5SCy Schubert 64*bf6873c5SCy Schubert * The current handling of error return codes is a mess. We need to find 65*bf6873c5SCy Schubert a way to return a rich set of error codes from the underlying functions 66*bf6873c5SCy Schubert and then map error codes appropriately in the interface functions. 67*bf6873c5SCy Schubert Helpful for this would be improved documentation of what error codes 68*bf6873c5SCy Schubert are permitted and where. 69*bf6873c5SCy Schubert 70*bf6873c5SCy Schubert * Tracking when to free the Kerberos context and other things stored in 71*bf6873c5SCy Schubert the PAM context is currently too complicated. It should be possible to 72*bf6873c5SCy Schubert simplify it with a reference counting scheme. 73*bf6873c5SCy Schubert 74*bf6873c5SCy SchubertDocumentation: 75*bf6873c5SCy Schubert 76*bf6873c5SCy Schubert * Document PKINIT configuration with MIT in krb5.conf. It looks like the 77*bf6873c5SCy Schubert library supports configuration in [realms] with similar names to the 78*bf6873c5SCy Schubert PAM module configuration. 79*bf6873c5SCy Schubert 80*bf6873c5SCy SchubertPortability: 81*bf6873c5SCy Schubert 82*bf6873c5SCy Schubert * If pam_modutil_getpwnam is not available but getpwnam_r is, roll our 83*bf6873c5SCy Schubert own using getpwnam_r. 84*bf6873c5SCy Schubert 85*bf6873c5SCy SchubertLogging: 86*bf6873c5SCy Schubert 87*bf6873c5SCy Schubert * Log the information that the Kerberos library asks us to display, or at 88*bf6873c5SCy Schubert least the info and error messages. 89*bf6873c5SCy Schubert 90*bf6873c5SCy Schubert * Log unknown PAM flags on module entry. Currently, only the symbolic 91*bf6873c5SCy Schubert flags we know about will be logged. 92*bf6873c5SCy Schubert 93*bf6873c5SCy SchubertTest suite: 94*bf6873c5SCy Schubert 95*bf6873c5SCy Schubert * Ensure that the test suite covers all possible PAM options. 96*bf6873c5SCy Schubert 97*bf6873c5SCy Schubert * Figure out why the pin-mit script for module/pkinit prompts twice and 98*bf6873c5SCy Schubert check if it's a bug in the module. 99*bf6873c5SCy Schubert 100*bf6873c5SCy Schubert * Find a way of testing the PKINIT identity selection for MIT Kerberos 101*bf6873c5SCy Schubert with use_pkinit enabled. 102