我試圖讓用戶使用他們的Google,Facebook和Windows Live帳戶登錄到ASP.NET MVC網站。我目前正在使用Azure App Fabric ACS,這使得它變得非常容易。問題是我需要電子郵件地址。谷歌和Facebook提供電子郵件作爲聲明,但Windows Live不提供。從LiveConnect網站看來,使用wl.basic(獲取用戶名)和wl.emails(獲取用戶的電子郵件地址)範圍很容易,但我無法按順序影響ACS獲取這些信息。我也嘗試在用戶登錄後實現OAuth2 Web服務器流程以便從我的網站獲取它。我能夠獲取所需的信息,但由於FedAuth Cookie被刪除時,我陷入了無限循環的簽名狀態我重定向到https://oauth.live.com/authorize以啓動流程。有沒有人能夠得到這個工作(在服務器端)?我應該完全取消ACS,並提供一個自定義頁面,使用來自每個提供商的自定義代碼來啓用登錄?Windows Live通過電子郵件通過Azure訪問控制服務
我用代碼翻新了以前的演示(博客引擎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);
}
在新請求中第一次填充了cookie(FedAuth和FedAuth1)。重定向回來後,它們消失了。我沒有做任何會議提供商(也許我應該)。
它越來越近6步,因爲我得到了餅乾從認證結果反饋。我編輯了上面的帖子,以包含我正在做的更具體的描述。 – sreed 2012-03-19 16:53:45
嗯,我明白了。我認爲這將有助於看到一個提琴手跟蹤(fiddler2.com)這個來看看什麼時候該cookie正在寫入和何時消失。 – 2012-03-24 16:00:35
你是否設法解決這個問題,我剛剛遇到同樣的問題。 – RubbleFord 2012-11-11 08:44:20