代码之家  ›  专栏  ›  技术社区  ›  Portman

如何使用MVC获得attributeExchange和/或simpleregistration?

  •  2
  • Portman  · 技术社区  · 15 年前

    我的头撞在墙上想 AttributeExchange SimpleRegistration 使用 3.2.0.9257 version of DotNetOpenAuth .

    以下是我所做的:

    1. 从Github下载了3.2.0.9257标签
    2. 已打开DotNetOpenAuth Visual Studio解决方案
    3. 对OpenIDrelyingPartyMVC示例进行了更改

    这些更改都在用户控制器的身份验证方法中。

    我换了44号线,

    return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();
    

    包括以下内容:

    var request = openid.CreateRequest(Request.Form["openid_identifier"]);
    
    // Add SimpleRegistration requests for Email and FullName
    var sr = new ClaimsRequest();
    sr.Email = DemandLevel.Request;
    sr.FullName = DemandLevel.Request;
    request.AddExtension(sr);
    
    // Add AttributeExchange requests for Email and FullName
    var ax = new FetchRequest();
    ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email));
    ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.FullName));
    request.AddExtension(ax);
    
    return request.RedirectingResponse.AsActionResult();
    

    (我还添加了dotnetopenauth.openid.extensions.attributeexchange和dotnetopenauth.openid.extensions.simpleregistration命名空间。)

    然后,在同样的方法中,在“阶段3认证”之后,我尝试获得响应:

    var sr = response.GetExtension<ClaimsResponse>();
    var ax = response.GetExtension<FetchResponse>();
    

    但是,这些响应总是空的。我尝试过谷歌、雅虎和myopenid。在所有情况下,身份验证都正常工作,但不会返回SimpleRegistration或AttributeExchange数据。

    我做错什么了?

    1 回复  |  直到 15 年前
        1
  •  5
  •   Andrew Arnott    15 年前

    Google不支持SReg,它的AX支持仅限于电子邮件地址,并且仅当您将电子邮件地址标记为“必需”时(您的代码使用默认的“可选”)。

    雅虎不支持AX,其SREG支持仅为白名单RP。

    myopenid支持sreg,以及默认情况下与dotneopenauth使用的不同类型的AX。您确定当用于肌萎缩患者时,索赔响应为空吗?因为在 my tests 它很好用。

    你可以四处转转,必须发送SREG ax请求,以及3种不同类型的ax,只需使用以下描述的axfetchasRegTransform行为 Getting User Attributes DotNetOpenAuth文档的。