REST WCF中的身份验证问题

时间:2011-08-20 06:09:05

标签: wcf heroku

我已经开发了REST WCF并在web.config中设置了绑定方式

<bindings>
  <webHttpBinding>
    <binding name="secureBasic">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </webHttpBinding>
</bindings>

<serviceBehaviors>
    <behavior name="ServiceBehaviour" >
      <serviceCredentials>
        <userNameAuthentication customUserNamePasswordValidatorType="RestService.CustomUsernamePasswordValidator, RestService"
                            userNamePasswordValidationMode="Custom" />
      </serviceCredentials>
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>

  </serviceBehaviors>

在CustomUsernamePasswordValidator.cs文件中,我按照以下方式验证用户

namespace RestService
{
public class CustomUsernamePasswordValidator : UserNamePasswordValidator
{
    public override void Validate(string userName, string password)
    {
        if (!AuthenticateUser(userName, password))
            throw new SecurityTokenValidationException("Invalid Username or Password");
    }

    private bool AuthenticateUser(string userName, string password)
    {
        if (userName == "myaddon" && password == "mypassword")
        {
            return true;
        }
        else
            return false;
    }
}
}

现在的问题是,当我将从同一个项目中使用此服务时,它运行良好但却混淆了为什么这次调用不会进行验证?

此外,当我从ruby commnad propmpt测试我的heroku manifest addon文件时,它会给我错误 认证失败!!我认为这是我的REST WCF应用程序的问题。

如果有人非常了解WCF和身份验证,那么任何人都可以帮我解决这个问题。

由于 阿伦。

1 个答案:

答案 0 :(得分:0)

最后,我直接使用WebOperationContext处理自定义身份验证,并跳过Web.Config设置。