使用HTTP标头中的标记保护WCF RESTful

时间:2015-03-24 12:04:19

标签: c# wcf rest authentication

我正在创建一个WCF RESTful服务,该服务将通过在HTTP标头中传递外部获取的身份验证令牌来加以保护。总之,序列非常类似:

  1. 客户端:从身份服务器获取身份验证令牌
  2. 客户端:构建REST调用将身份验证令牌放置在自定义HTTP中 头
  3. 客户:执行get
  4. Rest服务器:验证验证令牌是否存在
  5. Rest服务器:查询身份服务器以验证令牌和 获取用户上下文
  6. Rest服务器:授权用户Rest服务器: 执行服务操作
  7. 所以,我的问题是在WCF / .NET中执行此操作的最佳方法是什么?我当然可以在我的REST方法中手工制作认证/授权检查,即

    public void DoSomething(string input)
    {
        if (Authed())
        {
            ...Do DoSomething...
        }
        else
        {
            throw new FaultException<MyFault>(new MyFault("Not today, thanks"));
        }
    }
    
    public bool Authed()
    {
        string rawUserAuthToken = WebOperationContext.Current.IncomingRequest.Headers["MyCustomHttpHeader"];
    
        ...Do the magic needed to verify and Authorise the incoming token...
    
        return result;
    }
    

    但是,我确信在WCF中有更优雅的方法可以实现这一目标。做了一点谷歌搜索后,我遇到了SecurityTokenAuthenticator,但它似乎不适合我的需要。

    https://msdn.microsoft.com/en-us/library/system.identitymodel.selectors.securitytokenauthenticator(v=vs.110).aspx

    那么,有什么建议吗?

    编辑:这里的关键因素是解决方案必须是跨系统/语言中立的,客户端将基于几乎所有可以想象的技术堆栈,因此他们不能只是添加服务参考&#34; 34;

    由于

0 个答案:

没有答案