ASP.NET VB.NET - 如何使用IIS7 Active Directory设置单点登录SSO

时间:2011-05-20 15:40:57

标签: asp.net vb.net iis-7 single-sign-on

问题:每次启动Internet Explorer的新会话时,Web应用程序都会提示我输入Active Directory用户名和密码,而不是从当前登录的Active Directory配置文件中自动检索该信息。

如何在web配置或default.aspx.vb文件代码隐藏中设置单点登录,以便它不会提示我输入我的活动目录凭据?

以下是我的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但我不确定是否应该创建登录令牌方法而我没有使用数据库进行登录,因为我正在使用带有Active Directory的Windows身份验证。是否可以在web.config上添加一些东西来实现这一目标?

感谢您的期待!

1 个答案:

答案 0 :(得分:2)

您是否已验证IE中的“启用集成Windows身份验证”选项已启用?

在IE9中,转到工具,Internet选项,安全性,自定义级别,用户身份验证,登录。

Internet Options

如果您选择了“仅在Intranet区域中自动登录”但仍然无效,则表示该网站未显示为Intranet网站。您可以将网站从显示为Internet网站更改为Intranet网站,以使用此设置自动登录。

或者,您可以将登录更改为“使用当前用户名和密码自动登录”,这可能会打开安全漏洞。

或者,您可以设置组策略对象并将该网站添加为将自动进行身份验证的受信任站点。