我有以下情景,
移动客户端--->服务堆栈api(A)---> A Wcf服务(B)
我从移动客户端发送访问令牌作为Http Authorization标头到服务堆栈api(B)我不需要在Auth提供程序中使用服务堆栈构建,因为我的服务栈api(A)只是一个中间的api WCF服务(B)。
我将授权标头作为HttpRequestMessageProperty发送到WCF服务(B)。我正在处理wcf服务端(B)中的其余验证。
如何获取移动客户端发送的“访问令牌” 在服务堆栈侧(A),只是传递给其他服务(B)我 找不到合适的文件。
如果我从服务(B)获得安全异常,我该如何有效 在服务堆栈端管理它(A)。理想情况下,我希望检查 如果是我希望的安全例外,在一个地方的例外 将401返回给带有响应的移动客户端
管理令牌或凭据或其他方式的有效方法是什么 服务堆栈方面的用户相关内容?类似于会话
任何人都有任何想法?
答案 0 :(得分:1)
访问任何HTTP请求信息的方法是使用IRequest
接口,该接口随处可用,作为所有Request and Response Filters和Filter Attributes中的参数,来自base.Request
服务和剃刀意见等中的财产
可以从HTTP请求标头集合访问授权HTTP请求标头,例如:
var auth = httpReq.Headers[HttpHeaders.Authorization];
如果您想要对所有请求进行一般性处理,您通常会使用Global Request Filter来验证是否发送了有效的授权标头并且它是有效的,否则返回HTTP错误响应,例如:
this.GlobalRequestFilters.Add((req, res, requestDto) => {
var auth = req.Headers[HttpHeaders.Authorization];
if (auth == null)
{
res.StatusCode = (int)HttpStatusCode.Unauthorized;
res.EndRequest();
}
else if (!MyIsValid(auth))
{
res.StatusCode = (int)HttpStatusCode.Forbidden;
res.EndRequest();
}
});