java与第三方对接,JWT实现单点登录

1、依赖下载地址

jose4j-0.9.2.jar下载地址:https://repo1.maven.org/maven2/org/bitbucket/b_c/jose4j/0.9.3/jose4j-0.9.3.jar

JWT-SDK-1.1.1_1.8.jar下载地址(我的是JDK1.8):
https://idaas-hangzhou-developer.oss-cn-hangzhou.aliyuncs.com/developer/java/jwt/JWT-SDK-1.1.1_1.8.zip?spm=a2c4g.11186623.0.0.60f26945OSTv22&file=JWT-SDK-1.1.1_1.8.zip

2、引入JWT依赖
JWT-SDK-1.1.1_1.8.jar、jose4j-0.9.2.jar

3、编写代码

package sso12;

import com.alibaba.fastjson.JSON;
import com.idsmanager.dingdang.jwt.DingdangUserRetriever;
import org.apache.commons.lang.StringUtils;
import org.jose4j.jwk.JsonWebKey;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.MalformedClaimException;
import org.jose4j.jwt.consumer.InvalidJwtException;
import org.jose4j.lang.JoseException;
import turboweb.sso.Oauth2Entrance;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JWT(JSON Web Token)是一种基于JSON的开放标准,可以用于将声明信息与令牌进行安全传输。JWT通常用于认证和授权,因为它可以轻松地在不同的系统之间传输信息,并具有防止篡改和伪造的功能。单点登录(SSO)是一种身份验证技术,可以使用户在多个应用程序之间使用相同的凭据进行身份验证。 要使用JWT实现SSO,您需要采取以下步骤: 1. 首先,在应用程序之间建立信任关系。这可以通过共享密钥或使用公共/私有密钥对来完成。 2. 用户在登录时,将其凭据发送到认证服务器。 3. 认证服务器验证凭据,并在验证成功后签发JWT令牌。 4. JWT令牌包含一些声明信息,比如用户ID和访问权限等。 5. 用户在访问其他应用程序时,将JWT令牌发送到应用程序。 6. 应用程序验证JWT令牌,并在验证成功后允许用户访问相应的资源。 下面是一个简单的Java代码示例,演示如何使用JWT实现SSO: ```java import io.jsonwebtoken.*; import java.util.Date; public class JwtUtil { private static final long EXPIRATION_TIME = 86400000; // 1 day in milliseconds private static final String SECRET = "YourSecretKeyHere"; public static String generateToken(String userId) { Date expirationDate = new Date(System.currentTimeMillis() + EXPIRATION_TIME); return Jwts.builder() .setSubject(userId) .setExpiration(expirationDate) .signWith(SignatureAlgorithm.HS512, SECRET) .compact(); } public static boolean validateToken(String token) { try { Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token); return true; } catch (SignatureException ex) { System.out.println("Invalid JWT signature"); } catch (MalformedJwtException ex) { System.out.println("Invalid JWT token"); } catch (ExpiredJwtException ex) { System.out.println("Expired JWT token"); } catch (UnsupportedJwtException ex) { System.out.println("Unsupported JWT token"); } catch (IllegalArgumentException ex) { System.out.println("JWT claims string is empty."); } return false; } } ``` 在此示例中,我们使用HS512加密算法对JWT进行签名,并且我们可以使用相同的密钥验证JWT。生成令牌时,我们使用用户ID作为主题,并在令牌中设置过期时间。在验证令牌时,我们使用Jwts.parser方法解析令牌,并检查是否存在任何异常。如果令牌有效,则返回true;否则,将返回false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值