2010-07-29 64 views
0

我有一个WCF服务项目,我已经通过遵循guidelines here实现了自定义基本验证,并且所有工作都很好!但是,我无法找到是否有方法拒绝未经身份验证的用户访问仅限特定的端点。WCF拒绝某些端点上未经验证的用户

在我的项目中,我有大约5个端点,只希望用户对其中的几个进行身份验证。其他人,我想允许匿名访问。

我的web.config(片段)是这样的:

<system.web> 
    <customErrors mode="Off"/> 
    <authentication mode="None"/> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
      <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
     </assemblies> 
    </compilation> 
    <httpModules> 
     <add name="CustomBasicAuthentication" type="WebServices.Auth.CustomBasicAuthenticationModule, WebServices"/> 
    </httpModules> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 

    <membership defaultProvider="defaultProvider"> 
     <providers> 
     <add name="defaultProvider" type="WebServices.Auth.WSMembershipProvider, WebServices"/> 
     </providers> 
    </membership> 
</system.web> 

端点是相当普通的,例如:

<service name="WebServices.Distance" behaviorConfiguration="defaultBehavior"> 
    <endpoint address="" binding="webHttpBinding" bindingConfiguration="defaultBinding" contract="WebServices.IDistance" behaviorConfiguration="rest" /> 
</service> 
.... more endpoints below here .... 

所以不是击中所有端点的,我可以说,拒绝未经认证端点#1的用户(或名称或其他)。

我希望这是有道理的。如果没有,请随时嗤之以鼻。 :)

回答

0

好的,简单的解决方案。

删除该部分,并将下面的部分放在下方。

<location path="Secure"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
    </location> 

然后,只需创建一个名为“安全”,并把所需的服务,与他们一起的接口,该文件夹中的文件夹。

也许我应该在这里发表我的问题之前做更多的调查。

相关问题