首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取服务堆栈中授权承担者的值

获取服务堆栈中授权承担者的值
EN

Stack Overflow用户
提问于 2017-08-01 16:52:58
回答 1查看 798关注 0票数 1

我有如下设想,

移动客户端

我将从移动客户端作为Http授权头向服务堆栈api (B)发送访问令牌,我不需要在Auth providers中使用服务堆栈构建,因为我的服务堆栈api (A)只是WCF服务(B)的中间api。

我将授权头作为HttpRequestMessageProperty发送到WCF服务(B)。我正在处理wcf服务侧(B)的其余验证。

  1. 如何获得移动客户端在服务堆栈端(A)发送的“访问令牌”,并将其传递给其他服务(B)--我找不到有关这方面的适当文档。
  2. 如果从服务(B)获得安全异常,如何在服务堆栈端(A)有效地管理它。理想情况下,我希望在一个地方检查异常,如果它是一个安全异常,我希望将401返回给移动客户端并进行响应
  3. 在服务堆栈端管理令牌或凭据或其他与用户相关的事情的有效方法是什么?比如会话?

有人知道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-01 18:18:38

访问任何HTTP请求信息的方法是使用在任何地方都可用的IRequest接口,作为所有请求和响应过滤器过滤属性中的参数,来自Services和Razor视图中的base.Request属性等。

授权HTTP请求头可以从HTTP请求标头集合中访问,例如:

代码语言:javascript
复制
var auth = httpReq.Headers[HttpHeaders.Authorization];

如果您想对所有请求进行一般性处理,则通常使用一个全局请求筛选器来验证是否发送了有效的授权头,否则它是有效的,返回一个HTTP响应,例如:

代码语言:javascript
复制
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();
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45443588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档