Я пытаюсь разрешить пользователям входить на веб-сайт ASP.NET MVC с помощью учетных записей Google, Facebook и Windows Live.В настоящее время я использую ACS Azure App Fabric, что делает его почти слишком простым.Подвох мне нужен адрес электронной почты.Google и Facebook предоставляют электронную почту в качестве претензии, а Windows Live - нет.С сайта LiveConnect кажется, что это легко сделать, используя области wl.basic (чтобы получить имя пользователя) и wl.emails (чтобы получить адрес электронной почты пользователя), но я не смог повлиять на ACS в порядкеполучить эту информацию.Я также попытался реализовать поток веб-сервера OAuth2, чтобы получить его со своего сайта после того, как пользователь вошел в систему. Мне удалось получить необходимую информацию, но я застрял в бесконечном цикле входа в систему, поскольку куки-файлы FedAuth были удалены, когдаЯ перенаправил на https://oauth.live.com/authorize, чтобы начать поток.Кто-нибудь смог заставить это работать (на стороне сервера)?Должен ли я просто отказаться от ACS и предоставить пользовательскую страницу с использованием пользовательского кода от каждого провайдера, чтобы разрешить вход?
Я модифицировал предыдущую демонстрацию (движок блога ala smarx) с кодом, чтобы я не смог 'Не нужно выставлять что-либо частное.В мой web.config FedUtil вставил следующее:
<httpModules>
<add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpModules>
Я удалил запретить всех пользователей
Но у меня есть определенный метод действия (сообщение из нового блога), который заставляет пользователейбыть авторизованным
[Authorize]
public ActionResult New()
{
var principal = Thread.CurrentPrincipal as IClaimsPrincipal;
if (principal == null)
return new HttpStatusCodeResult(403);
// if this is a Windows Live User we have more work to do
string redirectUrl = CheckForWindowsLiveUser(principal);
if (redirectUrl != null)
{
return Redirect(redirectUrl);
}
Внутри запроса New при первом заполнении файлов cookie (FedAuth и FedAuth1). После возвращения перенаправления они исчезают.Я ничего не сделал с провайдером сеансов (может быть, я должен).