0
自己在使用C#中验证交换我的应用程序implementented SSO通过Dotnetopenauth谷歌openID问题标记?
我的疑虑如下,
- 在我的AX请求的响应,我不接受任何令牌。我需要发送任何参数吗?
- 在我的应用程序中,我需要用户每次都登录提供程序,但是如果用户在“下次自动登录”时单击复选框,它就再也不会从用户那里询问用户名和密码。
- AX fetchResponse null用于MyopenId。它是否仅支持简单注册?
请求代码:
IAuthenticationRequest request = openid.CreateRequest(txt_openid_identifier.Text);
var fetchRequest = new FetchRequest();
fetchRequest.Attributes.Clear();
fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.First);
fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.Last); fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.HomeAddress.Country);
request.AddExtension(fetchRequest);
// Issue request to OP
request.RedirectToProvider();
响应代码:
using (var openid = new OpenIdRelyingParty())
{
var response = openid.GetResponse();
if (response == null) return;
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
string emailID = string.Empty;
Session["email"] = string.Empty;
Session["name"] = string.Empty;
Session["country"] = string.Empty;
Session["Accesskey"] = string.Empty;
Session["SecretAccesskey"] = string.Empty;
var fetchResponse = response.GetExtension<FetchResponse>();
if (fetchResponse.Attributes.Contains(WellKnownAttributes.Contact.Email))
{
IList<string> emailAddresses =
fetchResponse.Attributes[WellKnownAttributes.Contact.Email].Values;
emailID = emailAddresses.Count > 0 ? emailAddresses[0] : null;
}
else
emailID = string.Empty;
}
}