我是azure、jwt、microsoft identity platform的新手。我需要解密一个jwt令牌,并验证该令牌是从azure生成的,而不是在我的普通旧java代码中手动创建的。我浏览了微软的文档,但没有一个涉及到技术实现。我真的非常需要帮助。先谢谢你。
fruv7luv1#
如果您想验证azure ad令牌,如果您想验证azure ad访问令牌,我们可以尝试使用sdk java-jwt 以及 jwks-rsa 去实现它。例如安装sdk
java-jwt
jwks-rsa
<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.10.3</version> </dependency> <dependency> <groupId>com.auth0</groupId> <artifactId>jwks-rsa</artifactId> <version>0.11.0</version> </dependency>
代码
// validate signature String token="<your AD token>"; DecodedJWT jwt = JWT.decode(token); System.out.println(jwt.getKeyId()); JwkProvider provider = null; Jwk jwk =null; Algorithm algorithm=null; try { provider = new UrlJwkProvider(new URL("https://login.microsoftonline.com/common/discovery/v2.0/keys")); jwk = provider.get(jwt.getKeyId()); algorithm = Algorithm.RSA256((RSAPublicKey) jwk.getPublicKey(), null); algorithm.verify(jwt);// if the token signature is invalid, the method will throw SignatureVerificationException } catch (MalformedURLException e) { e.printStackTrace(); } catch (JwkException e) { e.printStackTrace(); }catch(SignatureVerificationException e){ System.out.println(e.getMessage()); } // get claims String token="<your AD token>"; DecodedJWT jwt = JWT.decode(token); Map<String, Claim> claims = jwt.getClaims(); //Key is the Claim name Claim claim = claims.get("<>");
1条答案
按热度按时间fruv7luv1#
如果您想验证azure ad令牌,如果您想验证azure ad访问令牌,我们可以尝试使用sdk
java-jwt
以及jwks-rsa
去实现它。例如
安装sdk
代码