通过WCF REST服务中的标头进行身份验证
本文关键字:身份验证 WCF REST 服务 通过 | 更新日期: 2023-09-27 18:27:00
我是WCF服务的新手,目前正在进行测试。
我有一个小的REST API,它有几个方法。其中一些需要用户上下文(会话),而另一些则不需要。登录时,每个用户都会获得一个会话令牌。客户端应通过HTTP头在每个请求上提供此令牌及其用户ID。
目前,我编写了一个方法来获取这两个头并验证会话,在每个需要用户上下文的方法上调用它。如果API变得更大,这看起来有点恶心。
有更好的方法吗?
您可以利用以下解决方案:
- 分别为客户端和服务派生IClientMessageInspector/IDispatchMessageInspector的自定义类。然后将其实例添加到MessageInspectors中。拥有messageInspector的优点是它应用于单个端点,因此无论是否公开了多个端点(SOAP和REST),messageInspecter都只能与单个端点关联。无论何时接收或发送消息,都会分别调用AfterReceive或BeforeSent方法。在那里,您可以检索标头,若令牌和任何预期的不匹配,则可以引发异常。这样的解决方案提供了公开合同和后台检查(如令牌验证)之间的分离
- 自定义类派生IOperationInvoker。在自定义操作调用程序中,您显式地调用方法,并且由于它,您可以在调用任何方法之前检查标头(OperationContext.Current.IncomingMessage)
我提出的只有概念,广泛的信息和例子可以在互联网上查找