0

using check_authentication with yahoo openid

Hi,

I'm trying to implement a way for users to login to my site with yahoo openid.

I have figured out https://open.login.yahooapis.com/openid/op/auth as endpoint. Now I redirect the user on my page to this page
and attach the following attributes:

?openid.mode=checkid_setup
&openid.ns=http://specs.openid.net/auth/2.0
&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select
&openid.identity=http://specs.openid.net/auth/2.0/identifier_select
&openid.realm=http://mydomain
&openid.return_to=http://mydomain/somepage.php

This works so far as it really redirects the user to the yahoo login page and if he chooses to login to the page mydomain with his yahoo account,
yahoo redirects to the page I provided as the parameter openid.return_to.

Now comes the tricky part, however. In the next step I would like to verify the signature I got from yahoo with a call using openid.mode=check_authentication.

openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0
&openid.mode=id_res
&openid.return_to={MYRETURNURL}
&openid.claimed_id={CLAIMEDID}
&openid.identity={IDENTITY}
&openid.assoc_handle={ASSOC_HANDLE_GENERATED_BY_YAHOO}
&openid.response_nonce=2010-02-13T16%3A27%3A51Z3xi0xeM7pJ01y5DfW_DbhpYoWS.i8fhCTg--
&openid.signed=assoc_handle%2Cclaimed_id%2Cidentity%2Cmode%2Cns%2Cop_endpoint%2Cresponse_nonce%2Creturn_to%2Csigned%2Cpape.auth_level.nist
&openid.op_endpoint=https%3A%2F%2Fopen.login.yahooapis.com%2Fopenid%2Fop%2Fauth
&openid.pape.auth_level.nist=0
&openid.sig=qXIS5FIqnwLK%2FlPCKVs1JBNFBlY%3D

My problem is now that by specification ( http://openid.net/specs/openid-authenticat...e_checkid_setup or http://openid.net/specs/openid-authenticat...html#check_auth ) I have to return all the attributes for verification but the mode changes of course. It seems however, when looking at the attributes above I get back from yahoo, that the mode field is actually included in the openid.signed fields.

Can anybody help me what I may be doing wrong?

Thanks a lot

by
1 Reply
  • Hi Kerstov,

    You just need to relay all the response parameters (to your checkid_setup
    request) except changing openid.mode from "id_res" to "check_authentication"
    to the Yahoo! OP endpoint. It should return a plain-text response that
    contains the "is_valid:true" string.

    Your second request failed because of "openid.mode=id_res" -- you should
    change it to "openid.mode=check_authentication" as said above.

    Hope this helps.

    Yu Wang
    Yahoo! Membership
    0

Recent Posts

in OpenID General Discussion