2009-08-24 12 views
3

こんにちは私はasp.netで次のコードを持っています。私はopenIDにDotNetOpenAuth.dllを使用しています。私はいつも私はいつもclaimsResponse =ヌルを取得していますclaimsResponse常にNullを返す

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

を取得しています上記のコードのための

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; 
    } 

下のコードです。なぜそれが起こるのかRelyingPartyのドメイン検証のようなopenidに必要な要件はありますか?できるだけ早く私に答えてください。

答えて

関連する問題