Ответ 1
Когда вы успешно вошли в систему, вы можете делать все, что хотите, с полученными данными: уникальный идентификатор с запросами, которые вы запросили.
- Храните собранные данные в записи базы данных.
- Сохраните его в файле cookie (либо отправьте его как токен в свои службы, если он есть, либо используйте его в вашей RP (Reliant party)).
- Используйте его вместе с универсальным поставщиком членства или простым провайдером Sql.
Вот как вы должны иметь второе действие в вашем контроллере:
[AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
public ActionResult LogOnPostAssertion(string openid_openidAuthData)
{
IAuthenticationResponse response;
if (!string.IsNullOrEmpty(openid_openidAuthData))
{
var auth = new Uri(openid_openidAuthData);
var headers = new WebHeaderCollection();
foreach (string header in Request.Headers)
{
headers[header] = Request.Headers[header];
}
// Always say it a GET since the payload is all in the URL, even the large ones.
HttpRequestInfo clientResponseInfo = new HttpRequestInfo("GET", auth, auth.PathAndQuery, headers, null);
response = this.RelyingParty.GetResponse(clientResponseInfo);
}
else
{
response = this.RelyingParty.GetResponse();
}
if (response != null)
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
var token = RelyingPartyLogic.User.ProcessUserLogin(response);
this.FormsAuth.SignIn(token.ClaimedIdentifier, false);
string returnUrl = Request.Form["returnUrl"];
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
case AuthenticationStatus.Canceled:
ModelState.AddModelError("OpenID", "It looks like you canceled login at your OpenID Provider.");
break;
case AuthenticationStatus.Failed:
ModelState.AddModelError("OpenID", response.Exception.Message);
break;
}
}
Другие подсказки о том, что вы можете сделать с полученными данными: Создав запись входа пользователя в таблицу UserLogin в своей базе данных сторонних пользователей (ваше приложение). Вы сможете проверить подлинность и статус своего пользователя в следующий раз, когда он посетит ваше приложение. Вы также можете перенаправить его в первый раз на конкретную страницу для сбора более конкретных данных, которые поставщик OPENID не предоставил (например, возраст или пол). Вы можете отслеживать все пользовательские логины (OpenID (steam), google, liveID) и связывать их с пользователем. Это позволит вашему уникальному пользователю войти в систему с помощью любого провайдера проверки подлинности, который он также хотел бы.
В качестве полного примера, использующего аутентификатор Open ID, вы можете посмотреть проект OpenId для MVC2 1 из которого я извлек предыдущий пример.