SSO 系统设计_token 生成

SSO 系统设计_token 生成

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.增加依赖
      • 2.代码编写
      • 3.测试
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

需求:

我们知道token 就是个字符串之类的,所以我们采用如下生成:
1.增加依赖
2. 代码编写
3. 测试

设计思路

实现思路分析

1.增加依赖


        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.4.0</version>
        </dependency>



        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>

2.代码编写

package entity;

public class UserEntity {

    private  String name;
    private String  id;
    private String phone;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

public String getToken(UserEntity userEntity ) {
        //设置算法为HS256
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
        Date now = new Date(System.currentTimeMillis());
        JwtBuilder builder = Jwts.builder()
                //设置header
                .setHeaderParam("typ", "JWT")
                .setHeaderParam("alg", "HS256")
                //设置iat
                .setIssuedAt(now)
                //设置payload的键值对
                .claim("name", userEntity.getName())
                .claim("id", userEntity.getId())
                .claim("phone", userEntity.getPhone())
                .setIssuer("AuroraLove")
                //签名,需要算法和key
                .signWith(signatureAlgorithm, SECRET_KEY);
        String jwt = builder.compact();
        return jwt;
    }

3.测试

    @Test
    public  void genTOken(){

        SsoServer ssoServer=new SsoServer();
        UserEntity userEntity=new UserEntity();
        userEntity.setId("1");
        userEntity.setName("2");
        userEntity.setPhone("3");
        System.out.println( ssoServer.getToken(userEntity));
    }

SSO 系统设计_token 生成_第1张图片

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐

  1. 暂无

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

你可能感兴趣的:(开源项目和工具组件,java)