课件和 Demo 地址
https://gitee.com/geektime-geekbang/NET-Core
作者回复: 认证和授权如果在网关上做,那么网关就必须知晓每个接口需要的权限是什么,而这部分本身实际上是微服务负责定义的。 对于通常的业务系统,建议微服务自己负责授权,认证可以考虑网关做。 对于API开放平台性质的系统,可以考虑网关负责认证和授权,因为这类系统的授权机制是可以与接口本身解耦的
作者回复: 推荐使用 identityserver4
作者回复: jwt是认证token的一种方式,子系统的场景要看你怎么组织api,也要看子系统的业务关系。要么共享jwttoken,要么分别颁发
作者回复: 使用jwt的话,刷新由前端来控制,推荐使用refreshToken来处理
作者回复: services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) startup类中,类似下列写法 AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { options.LoginPath = "/account/login"; options.Cookie.HttpOnly = true; } });
作者回复: 一般是为每个微服务配置一条
作者回复: 即使网关进行了授权认证,微服务的api还是要进行授权判断的,因此你可以根据自己的实际场景来决定授权工作在那一层。 一般来讲,网关只负责入口路由,不负责业务(认证与授权)比较适合微服务架构。 如果你的网关是为了暴露开放平台的接口,这种场景,可以考虑网关负责认证授权,而微服务不需要关心授权问题
作者回复: 需要服务端与客户端定义约定,由客户端发起续约