IETF-SSH archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: WG Last Call (third time's the charm?) for SSH core drafts
> > Actually it might even be better to have it as a MUST since not doing
> > so allows for the potential of a client/server pair that can bypass
admin
> > policy and we shouldn't really encourage that.
>
> Well, the password policy should be entirely enforced by the server.
>
> MUST would rule out a "soft password expiration" policy where the
> server could strongly suggest, but not require, a password change, for
> some time interval before the change became mandatory..
I think this would be difficult to achieve
because of the way the authentication service works.
Quite frankly, in most real world cases, the user
is either going to have to change their password
or disconnect. The new wording allows the user
to pick an alternative to password, but if the
user had an alternative they probably would have
used it in the first place.
On the other hand, the new wording does take the
burden of enforcing this away when the server really
doesn't need to enforce it -- the server just MUST NOT
accept an expired password.
The challenge in allowing "soft password expiration"
as I understand what you mean is the question of
what the client should do if he/she has only a password
to authenticate with and they don't want to change it.
In this case, the SSH_MSG_USERAUTH_PASSWD_CHANGEREQ
message really isn't a failure message (we'd probably
want two different messages one that meant you can't
authenticate with password until you change it, and
one that meant you should change your password soon.)
If it isn't a failure message, what's the next step?
There is really only one thing that really make
sense to me -- The server sends a SUCCESS message
or a partial failure. (We need this because
of the partial failure case -- the password is okay,
but more authentication is necessary.)
If the server does this, in the success case it
is no longer possible for the user to change
their password (authentication messages after
success must be ignored.)
We could treat the SSH_MSG_USERAUTH_PASSWD_CHANGEREQ
as a failure message, in which case how does the
client proceed to success? The password mechanism
would have to behave differently the second
time through (stateful) -- I find this distasteful.
If we really wanted to clean this up,
we should (and I really don't think we
want to do all this now):
1. Allow authentication messages at any time --
requests after success are immediately failed
without further checking if they use a different
username.
Authentication requests after success MAY NOT
change the authorization status of the connection.
(Processes already running, etc.)
Failed requests don't affect the authentication /
authorization status. (We need this because the
client might have sent a whole bunch of requests
without waiting to find out which one would
succeed.)
The server MAY count failed requests against
a authentication attempt counter even after
success, though any such counter SHOULD be
reset to zero upon success.
2. Add a message like SSH_MSG_USERAUTH_PASSWD_EXPIRING
which included how much time was left before
expiration. The server would send this and
the usual success or partial failure message.
The client would display a "You password will
expire in n days. Would you like to change
it now?"
3. The client could issue a change request at
any time (because of #1)
And as long as were making changes like this,
we should:
4. Add a message that the server can send to
the client to require re-authentication
(credentials expired.)
- Joseph
Home |
Main Index |
Thread Index |
Old Index