首页 新闻 会员 周边

关于Asp.net core Web Api 认证,权限 相关的一些问题

0
悬赏园豆:80 [已解决问题] 解决于 2018-08-10 10:56

需求:

每次请求的时都进行身份认证/权限验证 ( 用户的权限是可以分配的, 不固定, 可以具有基础权限,也可以具有全部/部分权限 )  

 

想用JwtBearer中间件的方式来做.

才疏学浅,看了好多文章还是挺蒙的, 有几个问题. 希望大神解答..

1. 采用jwt bearer中间件的方式做认证如何.

2. 如何让签发的 jwt token设置成滑动过期 .

3. 这种情况下 去重写AuthorizeFilter 来进行权限验证 合适吗?

4. 有没有其他的解决方案...  前提是用api 签发token的形式来做(因为项目是前后端分离的)

咖菲猫的主页 咖菲猫 | 初学一级 | 园豆:28
提问于:2018-08-07 19:00
< >
分享
最佳答案
0

根据你的需求,建议你使用基于Token的Session认证方式实现。

token = Session id,token放置于request header中。

另外,附JWT的我的文章:https://github.com/hstarorg/HstarDoc/blob/master/%E5%89%8D%E7%AB%AF%E7%9B%B8%E5%85%B3/JWT%E8%AF%A6%E8%A7%A3.md 

收获园豆:30
幻天芒 | 高人七级 |园豆:37175 | 2018-08-07 19:42

其实已经按照类似的想法实操过一个项目了. 但是没有用jwt验证. 只是用jwt签发token,不参与验证.
我感觉使用jwt毫无意义... - -

咖菲猫 | 园豆:28 (初学一级) | 2018-08-08 10:28

@咖菲猫: 主要是你的需求不是很契合jwt的场景,所以比较别扭。jwt的优势是分布式友好,不需要存储系统参与就可以认证。

幻天芒 | 园豆:37175 (高人七级) | 2018-08-08 18:28
其他回答(3)
0
收获园豆:20
dudu | 园豆:30994 (高人七级) | 2018-08-07 21:28

文章不错. 但是好像不能解决我的问题.
我想要类似类似memorycache滑动过期的这种机制.

即签发的token能够支持滑动过期. 在滑动时间内(1H)命中token 则延迟过期时间.
想用jwt的原因是安全吧. 否则随意生成token放在memorycache中在过滤器种添加验证逻辑就能达到我想要的效果了....

支持(0) 反对(0) 咖菲猫 | 园豆:28 (初学一级) | 2018-08-08 10:25
0

当第三方不好进行支持,这种代码原本也就写不到多少行,何必纠结。

收获园豆:10
花飘水流兮 | 园豆:13560 (专家六级) | 2018-08-08 10:47

嗯. 还是按照原有思路搞算了. 不纠结了

支持(0) 反对(0) 咖菲猫 | 园豆:28 (初学一级) | 2018-08-08 12:02
0

1,中间件去参考微软官方文档,中间件执行顺序是串行的,注意注册顺序。

public class AuthorizeMiddleware
{
    private readonly RequestDelegate next;
    public AuthorizeMiddleware(RequestDelegate next)
    {
        this.next = next;
    }
    public async Task Invoke(HttpContext context)
    {
        var token = context.Request.Headers.FirstOrDefault(h => h.Key == "Authorization").Value;
        //context.Response.StatusCode = 401;
        //处理结束转其它中间组件去处理
        await next(context);
    }
}

2,Token本身无法实现滑动过期,可以加一个RefreshToken去重新获取Token。如果你有多种类型的前端调用,应该给每种前端不同的Token(有效时间)发放代码。

3,合适。虽然看NetCore官方文档上都推荐使用Middleware,但是Authorize的话我觉得Filter结合Attribute更好用。

4,IdentityServer4了解一下?

收获园豆:20
找不到一个满意的昵称 | 园豆:243 (菜鸟二级) | 2018-08-08 14:42

thanks !

支持(0) 反对(0) 咖菲猫 | 园豆:28 (初学一级) | 2018-08-10 10:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册