[security] [specs-pape] PAPE Policy for RPs to force authentication without browser cookie

John Bradley jbradley at mac.com
Wed Jul 1 16:26:06 UTC 2009


Allen,

There is nothing in the PAPE spec about the OP verifying that auth_age  
< max_auth_age before  returning the assertion.

That could lead to a deadlock situation.

You and others may see a value in that but that is not the intent of  
the PAPE spec.

If the time since the last interactive login when the OP receives the  
request is > max_auth_time then the OP must immediately re-prompt for  
authentication (not using a long lived cookie to authenticate the user.)

Perhaps it would have been clearer if we had stated that the OP must  
immediately reauth  the user but we never imagined that the OP would  
take the user through some other flow.

Part of the reason for this feature was Yahoo who drove a number of  
additions to the PAPE spec , such as NIST level 0 to say the user was  
authenticated with a long-lived cookie.

Given that Yahoo users may have authenticated up to 14 days  
previously,  that drove the need for max_auth_age to give a RP some  
control over how old an interactive authentication they were willing  
to accept.

The spec is worded that if max_auth_age is more than > than the  
auth_age the OP can still elect to re-authenticate the user.   If the  
OP sets there own max_auth_age upper limit of a couple of hours I  
think this covers the privacy concerns.

auth_age MUST be returned if max_auth_age is requested.
It is the time in seconds between the last interactive authentication  
and the manufacture of the return assertion.

It is up to the RP to decide what to do based on this.

We don't wan't to take flexibility away from the RP if the auth_age in  
the return is 2h then the RP has to decide if they get sent back to  
the OP again.

PAPE is about giving some control over the login back to the RP.  In  
the normal openID flow the OP has complete control over the  
authentication.

I am not sure why people think max_auth_age=0 is special it is just  
0.  Unless you are trying to read in the fancy auth_age < max_auth_age  
behavior that was never intended.

There may be a better way to achieve the desired behavior with authn  
URI to say things like the user must do a password reset (I think  
Facebook was looking for that)  or other things.

Some RP's are concerned about silent logins after the user has  
"Remembered" the RP in there OP config.

This potentially allows for cross site request forgeries against the RP.

I could also see a lighter flow where the RP requests that the user  
must consent to logging in but doesn't need to re-authenticate.

Those could be defined as auth methods potentially.

I am concerned that id OPs start creatively interpreting the PAPE spec  
it will loose a lot of its value.

We have some of that creative interpretation problem now with AX.

I am glad people are starting to show an interest in implementing and  
using PAPE.

John B.
On 1-Jul-09, at 1:32 AM, Allen Tom wrote:

> Hi Nate -
>
> Consider the scenario where the RP specified max_auth_age=1minute in  
> the request, and after being redirected to the OP, the user enters  
> their password, then sees the OP's approval screen and decides to  
> take a 10 minute break before clicking the "continue" button.
>
> Should the OP should re-prompt the user for the password again  
> before returning the assertion to the RP because the RP requested  
> that the password be verified within 1 minute of returning the  
> assertion?
>
> I believe that you said that the OP should re-verify the user's  
> password in this case, which makes plenty of sense.
>
> Now getting back to the original case, where the RP used the magic  
> max_auth_age=0 value. Unless there is zero network latency, and the  
> OP does not have a separate approval screen, it is impossible for  
> the OP to satisfy this requirement.
>
> That's why I was suggesting that we just define max_auth_age=0 as a  
> special case, and clearly define what is expected for this case.
>
> Thanks
> Allen
>
>
>
>
>
> Nate Klingenstein wrote:
>>
>>> For instance, what if the RP specified max_auth_age=<1 minute>?  
>>> Sometimes users take a few minutes to complete the OpenID sign in  
>>> flow (they might get distracted), and although the user may have  
>>> entered their password immediately after being redirected to the  
>>> OP, the user may have taken more than a minute to navigate through  
>>> the OP's approval screen, before clicking on the button to return  
>>> back to the RP.
>>
>> Isn't it the OP that is obliged to perform the check?  It would be  
>> performed immediately when the user presents the message, I'd  
>> imagine, since it's determining how to handle the request.
>>
>
>
>
>
>
>
>> It wouldn't matter if they dally at the OP if the RP weren't likely  
>> to complain about the auth_time on the user's arrival, which is a  
>> separate matter(and not mandated by spec from what I can tell).   
>> But some check probably needs to be explicitly performed by the RP  
>> on the return leg until authentication requests can be signed.  Sigh.
>>
>> Either way, the RP would only be sabotaging its own user base here,  
>> so this falls more into the category of recommendations or best  
>> practices, in my opinion.
>>
>> The SHOULD there reads strangely to, though.
>>
>>> In order to provide a standard "force authentication" interface, I  
>>> propose that either we define a new PAPE policy, or we clearly  
>>> define max_auth_age=0 as a special value.
>>
>> Having seen other working group applications and spec revisions  
>> move a little gradually, I feel compelled to first ask: how painful  
>> are these options?
>>
>>> comments?
>>
>> Yes.  Signed authentication requests would be nice and limit the  
>> "trust, but verify" the RP needs to do -- that is to say, limit the  
>> amount of private data the OP needs to expose.
>>
>> Take care,
>> Nate.
>
> _______________________________________________
> specs-pape mailing list
> specs-pape at openid.net
> http://openid.net/mailman/listinfo/specs-pape







More information about the security mailing list