2011-05-20 96 views
0

問題:每次我啓動Internet Explorer的一個新的會話,Web應用程序會提示我爲我的Active Directory用戶名和密碼,而不是自動檢索該信息來自當前登錄的Active Directory配置文件。ASP.NET VB.NET - 如何設置單點登錄SSO使用IIS7的Active Directory

如何設置單點登錄的Web配置或default.aspx.vb文件代碼隱藏,以便它不提示我要我的Active Directory憑據?

下面是從我的web.config文件中的代碼:

<authentication mode="Windows"/> 
    <identity impersonate="true"/> 

    <authorization> 

    <allow users="alg\bmccarthy, alg\phoward" />    
    <allow roles="alg\ACOMP_USER_ADMIN" /> 
    <allow roles="alg\ACOMP_user_AMG" /> 
    <allow roles="alg\ACOMP_user_BIG" /> 
    <allow roles="alg\ACOMP_user_NIS" /> 
    <allow roles="alg\ACOMP_user_GLA" /> 
    <allow roles="alg\ACOMP_user_PIP" /> 
    <allow roles="alg\ACOMP_user_PSM" /> 
    <allow roles="alg\ACOMP_user_PAM" /> 
    <allow roles="alg\ACOMP_user_ANN" /> 
    <allow roles="alg\ACOMP_user_AAM" /> 
    <allow roles="alg\ACOMP_user_MWM" /> 
    <allow roles="alg\ACOMP_user_GIM" /> 
    <deny users="*" />  
    </authorization> 

</system.web> 

<system.webServer> 
<modules runAllManagedModulesForAllRequests="true"/> 
<validation validateIntegratedModeConfiguration="false" /> 
<defaultDocument enabled="true"> 
     <files> 
      <clear /> 
      <add value="Default.aspx" /> 
     </files> 
    </defaultDocument> 
    </system.webServer> 

    <system.serviceModel> 
    <bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_IAcompService1" closeTimeout="00:01:00" 
     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
     useDefaultWebProxy="true"> 
     <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
     maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Windows" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
    </bindings> 
    <client> 

    <endpoint address="http://acompwebservice.myagencyservices.com/aCompService.svc" binding="basicHttpBinding" 
    bindingConfiguration="BasicHttpBinding_IAcompService1" contract="aComp_ServiceReference.IAcompService" 
    name="BasicHttpBinding_IAcompService1" /> 
    </client> 
    </system.serviceModel> 

我一直在尋找一些SSO code from MSDN,但我不知道我是否應該創建一個登錄令牌的方法和我不使用一個數據庫登錄因爲我使用Windows身份驗證w/Active Directory。是否有可能在web.config上添加一些內容來完成此操作?

感謝您的期待!

回答

2

您是否驗證過啓用IE中的「啓用集成Windows身份驗證」選項?

在IE9中,點擊工具→Internet選項,安全性,自定義級別,用戶驗證登錄。

Internet Options

如果您選擇了「自動登錄只在Intranet區域」,它仍然無法正常工作,這意味着該網站沒有被顯示爲Intranet網站。您可以將網站從顯示爲互聯網網站更改爲內聯網網站,以便自動登錄以使用此設置。

或者,您可以更改登錄到「使用當前用戶名和密碼自動登錄」,這可能打開一個安全漏洞。

或者,你可以建立一個組策略對象,並添加網站,作爲一個值得信賴的網站,將自動驗證。

+0

感謝您的回覆!在IE9下的安全性,自定義級別,用戶身份驗證,登錄:我只有在Intranet區域進行自動登錄,並將其更改爲使用當前用戶名和密碼自動登錄。這確實沒有用戶名和密碼提示將我登錄到網站。改變這會導致任何安全問題嗎? – 2011-05-23 17:59:10

+0

您應該恢復該更改並將自動登錄限制在Intranet區域。完成之後,將應用程序的URL添加到Intranet區域。這將保留您的安全設置,同時將Intranet區域設置應用於我們的應用程序。我還會研究爲什麼該服務器未被檢測爲本地Intranet區域的一部分? – 2011-05-23 18:35:25

+1

該網站不會加載爲內部網站點,而是作爲一個互聯網站點加載,這解釋了爲什麼它不進行自動認證。硬件支持人員說這是因爲該網站使用Web服務。 Web服務器人員會將該站點添加爲訪問acomp邀請的用戶組的可信站點和集成安全性,以便無需通過組策略對象更新手動更改每個用戶的設置。 – 2011-05-23 19:35:34