xref: /freebsd/contrib/pam-krb5/TODO (revision bf6873c5786e333d679a7838d28812febf479a8a)
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