最近在思考微服务网关的认证与授权来保护api,我的理解的意思是用客户端访问api时,经过网关认证,认证通过则调用api,否则返回403,用户输入密码账号,认证。但是我不理解的是,假如这个网站例如淘宝他们可以不进行登录就能访问,所以不需要认证客户端就可以调用api,这就和上面理解的认证与授权不一样了,还是说别api接口的授权与认证是指别的意思。
理解下面:
1.clientId+sceret 限制客户端应用 访问我的api
2.userinfo+password 客户端应用的用户 验证
有些api服务如商品信息只需要 我认可的客户端应用 即可访问。
有些api服务如我的订单则需要用户验证后 才可访问。
类似identityserver4的实现机制:
未登录前 客户端应用生成的访问token 的apiscopes(可以简单简单理解为权限)为 api-商品
登录后,客户端应用用户生成的token 的 apiscopes 包括 api-商品 api-我的订单
api接口泛指资源的交互。淘宝
这类的软件本就是大众使用的,只是涉及到某些操作的时候就需要特定的权限。
我个人认为还有就是认证不一定是在网关做哦,最终权限还是控制在了api上。
关于API的认证以及权限有很有多种方式(参考oidc oauth 2.0)。
那你的意思是有的接口不需要认证,那不会出现恶意的频繁访问?
@灬丶: 恶意的访问就控制在网关上的限流、熔断机制了
认证跟授权是两个东西,认证是你能不能访问,授权是你有没有资格
认证是一定要登录吗?
@灬丶: 认证和登录无关、认证就是一个身份的确认(oauth\open id connect)。
@灬丶: 登录认证只是认证的一种形式,通过账号密码认证,还有其他的认证方式,你可以了解一下jwt
@不知道风往哪儿吹: jwt我知道,用户第一次访问的时候肯定是没有token的,所以认证不了。
@灬丶: 如果你想携带token访问接口,第一个需要获取token,而不是去访问接口,获取了token之后,把token放到请求头里面,再去访问接口,这时候,你就可以认证了