我不确定为什么会收到 302 Found 但没有响应正文。当我尝试使用 Postman 访问由 Azure b2c 保护的 spring-boot 服务时,我正确传递了从此函数生成的访问令牌
@GetMapping("/token")
public String getAccessToken(Authentication authentication) {
if (authentication instanceof OAuth2AuthenticationToken oauthToken) {
String clientRegistrationId = oauthToken.getAuthorizedClientRegistrationId();
OAuth2AuthorizedClient client = authorizedClientService.loadAuthorizedClient(
clientRegistrationId, oauthToken.getName());
if (client != null) {
OAuth2AccessToken accessToken = client.getAccessToken();
return "Access Token: " + accessToken.getTokenValue();
}
}
return "Access token not found!";
}
使用 jwt.io 解码此令牌,获取此
"iss": "https://learningakash.b2clogin.com/a593b6b3-b245-4e93-9213-e5e9c70a25ec/v2.0/",
"exp": 1728976728,
"nbf": 1728973128,
"sub": "e7433b04-2a76-44d2-bc58-0c6844068546",
"given_name": "Piggy",
"family_name": "Account",
"tfp": "B2C_1_signupsignin",
"nonce": "pkAg9R-R2x6RodQUfbT8LZzJd6fzm9-ulN9xS-OFvoY",
"azp": "77a7047b-ec7f-4d87-bad7-d2d145425a57",
"ver": "1.0",
"iat": 1728973128
}
奇怪的是 JWT.io 显示这样的无效签名,
我在这里做错了什么。
我尝试将访问令牌添加到 jwt.io 并得到相同的错误无效签名,因为我在RS256算法中使用了访问令牌。
作为参考,请检查此SO答案。
JWT.io 不支持
RS256
。
最初,我在使用
RS256
时也遇到了同样的错误,但是当我更改为 HS265
时,它对我有用。