claimsResponse Always Return Null

Posted by Chirag Pandya on Stack Overflow See other posts from Stack Overflow or by Chirag Pandya
Published on 2009-08-21T12:48:31Z Indexed on 2010/06/13 19:52 UTC
Read the original article Hit count: 408

Filed under:
|

Please Help me in this problem. I am getting ClaimsResponse Always Null. I am Seaching lots example for dotnetOpenAuth and also implement in local but it always return null. please send me detail why this happen?? i am using DotNetOpenAuth-3.2.0.9177 in asp.net. i want Email,FullName,Country from ClaimsResponse but i am not able to get it.

© Stack Overflow or respective owner

claimsResponse Always Return Null

Posted by Chirag Pandya on Stack Overflow See other posts from Stack Overflow or by Chirag Pandya
Published on 2009-08-24T03:49:29Z Indexed on 2010/06/13 19:52 UTC
Read the original article Hit count: 408

Filed under:
|

hello i have a following code in asp.net. i have used DotNetOpenAuth.dll for openID. the code is under

protected void openidValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
        // This catches common typos that result in an invalid OpenID Identifier.
        args.IsValid = Identifier.IsValid(args.Value);
    }

    protected void loginButton_Click(object sender, EventArgs e)
    {
        if (!this.Page.IsValid)
        {
            return; // don't login if custom validation failed.
        }
        try
        {
            using (OpenIdRelyingParty openid = this.createRelyingParty())
            {
                IAuthenticationRequest request = openid.CreateRequest(this.openIdBox.Text);

                // This is where you would add any OpenID extensions you wanted
                // to include in the authentication request.
                ClaimsRequest objClmRequest = new ClaimsRequest();
                objClmRequest.Email = DemandLevel.Request;
                objClmRequest.Country = DemandLevel.Request;
                request.AddExtension(objClmRequest);

                // Send your visitor to their Provider for authentication.
                request.RedirectToProvider();
            }
        }
        catch (ProtocolException ex)
        {
            this.openidValidator.Text = ex.Message;
            this.openidValidator.IsValid = false;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        this.openIdBox.Focus();
        if (Request.QueryString["clearAssociations"] == "1")
        {
            Application.Remove("DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.ApplicationStore");

            UriBuilder builder = new UriBuilder(Request.Url);
            builder.Query = null;
            Response.Redirect(builder.Uri.AbsoluteUri);
        }

        OpenIdRelyingParty openid = this.createRelyingParty();
        var response = openid.GetResponse();
        if (response != null)
        {
            switch (response.Status)
            {
                case AuthenticationStatus.Authenticated:
                    // This is where you would look for any OpenID extension responses included
                    // in the authentication assertion.
                    var claimsResponse = response.GetExtension<ClaimsResponse>();
                    State.ProfileFields = claimsResponse;
                    // Store off the "friendly" username to display -- NOT for username lookup
                    State.FriendlyLoginName = response.FriendlyIdentifierForDisplay;
                    // Use FormsAuthentication to tell ASP.NET that the user is now logged in,
                    // with the OpenID Claimed Identifier as their username.
                    FormsAuthentication.RedirectFromLoginPage(response.ClaimedIdentifier, false);
                    break;
                case AuthenticationStatus.Canceled:
                    this.loginCanceledLabel.Visible = true;
                    break;
                case AuthenticationStatus.Failed:
                    this.loginFailedLabel.Visible = true;
                    break;

                // We don't need to handle SetupRequired because we're not setting
                // IAuthenticationRequest.Mode to immediate mode.
                ////case AuthenticationStatus.SetupRequired:
                ////    break;
            }
        }
    }

    private OpenIdRelyingParty createRelyingParty()
    {
        OpenIdRelyingParty openid = new OpenIdRelyingParty();
        int minsha, maxsha, minversion;
        if (int.TryParse(Request.QueryString["minsha"], out minsha))
        {
            openid.SecuritySettings.MinimumHashBitLength = minsha;
        }
        if (int.TryParse(Request.QueryString["maxsha"], out maxsha))
        {
            openid.SecuritySettings.MaximumHashBitLength = maxsha;
        }
        if (int.TryParse(Request.QueryString["minversion"], out minversion))
        {
            switch (minversion)
            {
                case 1: openid.SecuritySettings.MinimumRequiredOpenIdVersion = ProtocolVersion.V10; break;
                case 2: openid.SecuritySettings.MinimumRequiredOpenIdVersion = ProtocolVersion.V20; break;
                default: throw new ArgumentOutOfRangeException("minversion");
            }
        }
        return openid;
    }

for above code i am always getting

var claimsResponse = response.GetExtension<ClaimsResponse>();

i am always getting claimsResponse= null. what is the reason why it happen. is there any requirement which is required for openid like domain validation for RelyingParty?? please give me answer as soon as possible.

© Stack Overflow or respective owner

Related posts about c#

Related posts about dotnetopenauth