美文网首页
SpringCloud之 - 服务认证(JWT)

SpringCloud之 - 服务认证(JWT)

作者: huanfuan | 来源:发表于2018-02-11 11:32 被阅读0次

一.背景
微服务架构下,我们的系统根据业务被拆分成了多个职责单一的微服务。

每个服务都有自己的一套API提供给别的服务调用,那么如何保证安全性呢?

不是说你想调用就可以调用,一定要有认证机制,是我们内部服务发出的请求,才可以调用我们的接口。

需要注意的是我们这边讲的是微服务之间调用的安全认证,不是统一的在API官网认证,需求不一样,API网关处的统一认证是和业务挂钩的,我们这边是为了防止接口被别人随便调用。

二.方案
OAUTH2

Spring Cloud可以使用OAUTH2来实现多个微服务的统一认证授权

通过向OAUTH2服务进行集中认证和授权,获得access_token

而这个token是受其他微服务信任的,在后续的访问中都把access_token带过去,从而实现了微服务的统一认证授权。

JWT

JWT是一种安全标准。基本思路就是用户提供用户名和密码给认证服务器,服务器验证用户提交信息信息的合法性;如果验证成功,会产生并返回一个Token,用户可以使用这个token访问服务器上受保护的资源。

感觉这2种好像没多大区别呀,其实是有区别的:OAuth2是一种授权框架 ,JWT是一种认证协议

无论使用哪种方式切记用HTTPS来保证数据的安全性。

@RestController
@RequestMapping(value="/oauth")
public class AuthController {

    @Autowired
    private AuthService authService;

    @PostMapping("/token")
    public ResponseData auth(@RequestBody AuthQuery query) throws Exception {
        if (StringUtils.isBlank(query.getAccessKey()) || StringUtils.isBlank(query.getSecretKey())) {
            return ResponseData.failByParam("accessKey and secretKey not null");
        }

        User user = authService.auth(query);
        if (user == null) {
            return ResponseData.failByParam("认证失败");
        }

        JWTUtils jwt = JWTUtils.getInstance();
        return ResponseData.ok(jwt.getToken(user.getId().toString()));
    }

    @GetMapping("/token")
    public ResponseData oauth(AuthQuery query) throws Exception {
        if (StringUtils.isBlank(query.getAccessKey()) || StringUtils.isBlank(query.getSecretKey())) {
            return ResponseData.failByParam("accessKey and secretKey not null");
        }

        User user = authService.auth(query);
        if (user == null) {
            return ResponseData.failByParam("认证失败");
        }

        JWTUtils jwt = JWTUtils.getInstance();
        return ResponseData.ok(jwt.getToken(user.getId().toString()));
    }

}

相关文章

  • SpringCloud之 - 服务认证(JWT)

    一.背景微服务架构下,我们的系统根据业务被拆分成了多个职责单一的微服务。 每个服务都有自己的一套API提供给别的服...

  • jwt使用原理

    jwt使用原理 概念: springboot-jwt-2020 JWT原理 服务器认证以后会生产一个json对象,...

  • Spring Boot实战之Filter实现使用JWT进行接口认

    Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(json web token) 用户发...

  • jwt详解

    什么是JWT? JWT的原理 服务器经过认证以后,会生成加密串返回前台,结构如下图: Header Header ...

  • JWT认证原理分析

    基于session的认证 JWT认证规则 JWT(Json Web Token) JWT原理 签发算法 校验算法 ...

  • JWT认证机制

    JWT认证机制session不可跨域,用户信息保存在服务器端;JWT可以跨域,用户信息保存在浏览器; JWT工作原...

  • SpringCloud技术指南系列(三)服务注册发现之Eurek

    SpringCloud技术指南系列(三)服务注册发现之Eureka服务调用 SpringCloud所谓的服务注册与...

  • SpringCloud技术指南系列(四)服务注册发现之Consu

    SpringCloud技术指南系列(四)服务注册发现之Consul服务注册 SpringCloud所谓的服务注册与...

  • node.js使用JWT登录

    一、什么是JWT JWT全称是jsonwebtoken,JWT的声明一般被用来在身份提供者和服务提供者间传递被认证...

  • JWT

    JSON Web Token(JWT)是一个非常轻巧的规范(安全认证标准)。这个规范允许我们使用JWT在用户和服务...

网友评论

      本文标题:SpringCloud之 - 服务认证(JWT)

      本文链接:https://www.haomeiwen.com/subject/vxuktftx.html