2010-11-29 51 views
3

感謝您的閱讀和您的想法;這是一個棘手的問題,所以我想我會分享一下,看看對於比我們這些經驗豐富的開發人員來說這是否是一個公平的挑戰。如何說服Internet Explorer允許其他用戶進行身份驗證?

我們正在爲企業Microsoft Active Directory環境開發Web應用程序,並且我們使用IIS提供的Windows身份驗證來驗證用戶的單點登錄以及表單身份驗證。我知道IIS啓用時抱怨,但它運行得很好,而且我們部署的每個站點都沒有奇怪的怪癖 - 直到現在。

新網站具有「共享」計算機,永久登錄一個通用帳戶,該帳戶對他們需要使用的應用程序具有隻讀訪問權限。這意味着我們不能區分應用程序擁有不同權限的用戶;我們需要一些提示用戶輸入驗證細節的方法。

首先嚐試了一些嚴重的谷歌搜索;世界上沒有其他人似乎有我們的問題,除了一些誤導的靈魂,他們曾經向以太問過問題並沒有得到任何迴應。

經過一些頭腦風暴和討論IIS身份驗證的工作方式之後,似乎最直接的方法就是發出一個401 Unauthorized來響應已知爲共享帳戶的用戶。這裏的初始測試看起來很成功,可以在瀏覽器中成功更改用戶名,但是該站點的原型沒有提示輸入憑據,並且瀏覽器保留了相同的帳戶詳細信息。我們也擊中了特定於IE的javascript

document.execCommand("ClearAuthenticationCache") 

這又一次在實驗室中工作,但不在現場。現場IE安全設置的進一步實驗表明,如果Web應用程序站點被排除在Intranet區域之外,瀏覽器將自動重新進行身份驗證,無論用什麼方法誘騙瀏覽器提示用戶輸入新的帳戶詳細信息。

現在我們卡住了。我們已經有了解決辦法選項得到了怎麼回事的時候,但他們絕對不是「正確」的答案:

  • 要求用戶登錄到我們的應用程序(之前註銷共享賬戶的......呸)
  • 排除我們從Intranet區域的web應用上的所有機器
  • 爲用戶提供

我相信,有這樣做的規範方式非SSO登錄服務 - 已知的模式,共同這個問題已經解決了,就像那樣 - 我非常有興趣聽到什麼需要創造性的方法來解決這類問題,並且如果其他人實際上曾經經歷過類似的任何事情。

+4

在這些計算機上爲IE提供第二個快捷方式並打開「使用不同憑據運行」選項是否合適? - 因此從該快捷方式啓動將提示輸入新憑據 – 2010-11-29 08:59:11

+0

那麼您是否考慮過使用其他瀏覽器?例如,FireFox不知道Single-Sing on功能,但每次首次訪問頁面時彈出一個登錄輸入表單。 – 2010-11-29 09:02:37

+1

@Yves M.我們在目標環境中相當受限制;一切都相當官僚,微軟套件,甚至令人信服的網站使用比IE6更新的瀏覽器版本很難。更改瀏覽器供應商不是一種選擇:( – jshu 2010-11-29 09:11:36

回答

1

我們最終決定了向服務器知道的LDAP目錄提交查詢的解決方案。這意味着必須接受用戶的密碼,但沒有其他解決方案足夠穩固,無法在生產環境中運行。

希望這可以幫助別人。需要.NET Framework 3.5+。

using System.DirectoryServices.AccountManagement; 

private static bool IsLdapAuthenticated(string username, string password) 
{ 
    PrincipalContext context; 
    UserPrincipal principal; 

    try 
    { 
     context = new PrincipalContext(ContextType.Domain); 
     principal = Principal.FindByIdentity(context, IdentityType.SamAccountName, username) as UserPrincipal; 
    } 
    catch (Exception ex) 
    { 
     // handle server failure/user not found/etc 
    } 

    return context.ValidateCredentials(principal.UserPrincipalName, password); 
} 
1

您可以不創建共享帳戶被拒絕訪問的頁面。然後,在需要用戶使用非共享帳戶重新進行身份驗證的任意位置,執行重定向至該頁面的查詢字符串中編碼的返回URL?這應該會觸發瀏覽器建立通常的登錄對話框。

用戶重新認證後,新頁面應該重定向回查詢字符串中的返回URL。

相關問題