我正在尝试使用WCF在IIS上进行基本身份验证。
我开发了一个RESTFul Web服务并启用了SSL。我通过user name
和password
通过
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>`
答案 0 :(得分:0)
您是否以适当的基本身份验证格式传递凭据?
授权基本-base64(用户名:密码)
string credentials = string.Format("{0}:{1}", _username, _password);
requestProperty.Headers["Authorization"] = string.Format("Basic {0}", Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(credentials)));
这样link描述了类似的问题。
答案 1 :(得分:0)
我发现了这个问题! IIS仅允许Active Directory用户。 因此,要在IIS上使用基本身份验证,您需要添加您希望授予Microsoft Active Directory访问权限的用户。