WSS站点里Asp.Net 身份验证问题解决

由于我们BizTalk项目中经常会需要用到BAS,BAM等,(如:RosettaNet等),所以需要安装配置WSS,一般默认情况会提升Default Web Site(80)站点, 但是如果有Asp.Net WebSite 需要Host 在默认站点80 里的时候就会带来一些身份验证上的困惑,经常会导致身份验证不正常,如

<authentication mode="Windows" />
      <authorization>
        <allow users="mailto:qi.ma@cn.abb.com"/>
        <allow users="asiapacific\cnmaqi1"/>
         <deny users="*"/>
      </authorization>

 --------------------

<location path="TIHandling.asmx">
  <system.web>
   <authorization>
    <allow   users="?"/>   <!--<allow   users="*"/>-->
   </authorization>
  </system.web>
 </location>

或者在使用Asp.Net Login控件时候也有同样的问题

<authentication mode="Forms">
            <forms    name=".ASPXAUTH"
                    loginUrl="Login.aspx"
                    protection="All"
                    timeout="30"
                    path="/"
                    requireSSL="false"
                    slidingExpiration="true"
                    defaultUrl="Default.aspx"
                    cookieless="UseDeviceProfile"
                    enableCrossAppRedirects="false"/>
        </authentication>

最初的时候百思不得其解,后来实在不行就索性换了一个站点,但是可以确定是由于WSS造成的, 在Default Web Site(80) 站点根目录下就会有一个sharepoint 的 web.config,根据msdn官方说法,web.config 有继承关系,还有一个必须要清楚的是asp.net 身份验证是在httpModules 里操作的, 查看sharepoint 的web.config,发现了问题,如下:

<httpModules>
            <clear/>
            <add name="OutputCache" type="System.Web.Caching.OutputCacheModule"/>
            <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule"/>
            <!--    <add name="Session" type="System.Web.SessionState.SessionStateModule"/>-->
        </httpModules>

比对默认的web.config(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config)

对自己站点下的web.config 做如下调整, 首先清除所有的httpModules,重新添加标准的httpModules:

<system.web>

    ...............
    <httpModules>
            <clear/>
            <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" />
            <add name="Session" type="System.Web.SessionState.SessionStateModule" />
            <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" />
            <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
            <add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule" />
            <add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
            <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
            <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" />
            <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" />
            <add name="Profile" type="System.Web.Profile.ProfileModule" />
            <add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </httpModules>

.................

至此Login控件等身份验证工作正常.

 

Tips:“*”表示所有用户;“?”表示匿名用户;

posted @ 2008-12-09 23:12  upzone  阅读(290)  评论(0编辑  收藏  举报