【问题标题】:How can I satisfy IIS Basic Authentication with WCF如何使用 WCF 满足 IIS 基本身份验证
【发布时间】:2014-06-06 18:09:33
【问题描述】:

我正在尝试使用 WCF 在 IIS 上进行基本身份验证。

我开发了一个 RESTFul 网络服务并启用了 SSL。我通过user namepassword通过

HttpContext.Current.Request.Headers["Authorization"],

我使用这些信息将HttpContext.Current.User 设置为新的genericPrincipal()

最终属性HttpContext.Current.User.Identity.IsAuthenticated 保持“真实” 但是我收到的回复是"401 Unauthorized"。所以我的问题是,我怎样才能满足 IIS 基本身份验证?

Web.Config

<?xml version="1.0" encoding="UTF-8"?>
            <system.serviceModel>
               <services>
                  <service name="Agfa.ChannelServiceRest.PrivateServices" behaviorConfiguration="PrivateBehaviors">
                     <endpoint contract="Agfa.ChannelServiceRest.IPrivateServices" 
                               binding="webHttpBinding" 
                               bindingConfiguration="Secure" 
                               behaviorConfiguration="Web" 
                               name="PrivateBehaviors" />
                  </service>
               </services>
               <bindings>
                  <webHttpBinding>
                     <binding name="Secure">
                        <security mode="Transport">
                           <transport clientCredentialType="Basic" />
                        </security>
                     </binding>
                  </webHttpBinding>
               </bindings>
               <behaviors>
                  <endpointBehaviors>
                     <behavior name="Web">
                        <webHttp />
                     </behavior>
                  </endpointBehaviors>
                  <serviceBehaviors>
                     <behavior name="PrivateBehaviors">
                        <serviceMetadata httpsGetEnabled="true" />
                        <serviceDebug includeExceptionDetailInFaults="false" />
                     </behavior>
                  </serviceBehaviors>
               </behaviors>
               <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
            </system.serviceModel>`

【问题讨论】:

    标签: c# wcf authentication iis


    【解决方案1】:

    您是否以正确的格式传递凭据以进行基本身份验证?

    基本授权 -base64(用户名:密码)

     string credentials = string.Format("{0}:{1}", _username, _password);
     requestProperty.Headers["Authorization"] = string.Format("Basic {0}", Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(credentials)));
    

    所以link 描述了一个类似的问题。

    【讨论】:

    • 是的,我会的,我用我的调试制作了一个视频并将其上传到 youtube:youtube.com/watch?v=cqtWvM8l2Kg&feature=youtu.be 该视频显示了详细的调试,其中包含有关用户请求、身份验证和响应状态的信息。
    【解决方案2】:

    我发现了问题! IIS 只允许 Active Directory 用户。 因此,要在 IIS 上使用基本身份验证,您需要添加您希望授予 Microsoft Active Directory 访问权限的用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-02
      • 2014-09-15
      • 2011-10-11
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多