2013-03-05 47 views
2

我最近纔看到ACS,AAL,WAAD,我想避免將用戶重定向到其IDP的登錄頁面。我想讓我的用戶保留在我的網站中,並向他們展示一個下拉框,以選擇他們想要進行身份驗證的用戶以及要求輸入用戶名和密碼的區域,然後通過代碼獲取令牌。這可能嗎?ACS--繞過用戶重定向到IdP?

我一直在審查一些示例應用程序,併產生一個快速的模擬,但似乎無法讓事情工作,例如,

 _authContext = new AuthenticationContext("https://littledeadbunny.accesscontrol.windows.net"); 

     string enteredEmailDomain = UserNameTextbox.Text.Substring(UserNameTextbox.Text.IndexOf('@') + 1); 

     IList<IdentityProviderDescriptor> idpdList = _authContext.GetProviders("http://littledeadbunny.com/NonInteractive"); 
     foreach (IdentityProviderDescriptor idpd in idpdList) 
     { 
      if (String.Compare(ServiceRealmDropDownList.SelectedValue, idpd.Name, StringComparison.OrdinalIgnoreCase) == 0) 
      { 
       Credential credential; 
       credential = new UsernamePasswordCredential(enteredEmailDomain, UserNameTextbox.Text, PasswordTextbox.Text); 

       _assertionCredential = _authContext.AcquireToken("http://littledeadbunny.com/NonInteractive", idpd, credential); 

       return; 
      } 
     } 

使用上面的代碼,當我嘗試使用Windows Azure中的Active Directory用戶(管理員),我得到的錯誤「數據在根級別是無效的。行1,位置1。」我試圖獲得認同。

當我使用Google時,出現錯誤「0x8010000C:沒有身份提供者匹配請求的協議」。

如果有工作樣品?如果我正在做一些明顯錯誤的事情,我會讚賞糾正。

回答

1

這不支持被動身份提供程序。像谷歌,Facebook等IdPs不希望其他人爲他們收集證書,因爲這會導致安全問題和可能的網絡釣魚攻擊。他們也不支持它,因爲他們需要能夠顯示權限對話框(詢問用戶是否想要向你發佈數據的屏幕),這是他們在瀏覽器重定向到他們的情況下無法做到的。此外,谷歌特別支持雙因素認證,這是你無法複製的,而且通常收集證書會在圍繞其他用戶界面問題(例如不正確或被遺忘的密碼)周圍發現整個蠕蟲。

這通常也是一種糟糕的用戶體驗,因爲您的用戶很可能已經登錄到Google並在那裏存在Cookie。如果是這樣,並且他們已經同意了你的應用,他們只會默默地重定向到你。在你的情況下,即使用戶已經登錄,他們仍然需要提供用戶名/密碼。

執行這些類型登錄的正確方法是在您的應用中呈現瀏覽器控件,以允許用戶在他們的IdP中登錄,這是AAL幫助的。

+0

感謝奧倫如何,這是有道理的。這是否也適用於Office365和Windows Azure Active Directory?我知道這些可以與本地目錄同步,並且在訪問業務線應用程序時,用戶熟悉點擊​​內部登錄屏幕。在這種情況下瀏覽器控件是否適用,以及要求用戶通過瀏覽器控件對WAAD或Office 365進行身份驗證? 對不起,如果這聽起來很愚蠢,這對我來說都是非常新的。 – user2135771 2013-03-05 20:58:08

+0

讓用戶使用瀏覽器控件登錄到O365或Azure AD是完全合適的。 – 2013-03-06 01:01:40

+0

感謝您的信息。瀏覽器控制是唯一的選擇,是否有其他方式來管理認證過程?有沒有樣品或指南能夠做到這一點?這將整理我的學習曲線。謝謝你的時間。 – user2135771 2013-03-06 11:20:46

0

我有同樣的錯誤,執行的PowerScript解決了這一錯誤

PS C:\ Windows \ System32下> $ replyUrl =新MsolServicePrincipalAddresses - 地址https://mydomain.accesscontrol.windows.net/

PS C:\ WINDOWS \ SYSTEM32>新MsolServicePrincipal -ServicePrincipalNames @( 「https://mydomain.accesscontrol.windows.net/」)-DisplayName 「MYDOMAIN的命名空間」 -Addresses $ replyUrl

但我有403權限錯誤

反正卡住如果你得到任何進一步的我想知道:)