我想针对Azure AD B2C保护Java Rest API。
我知道调用方正在使用Authorization标头调用服务,其值如下:Bearer xxx-token
是ID还是访问令牌?
服务应采取哪些步骤来确保这是一个有效的令牌?使用MSAL4J的Java代码将不胜感激。
答案 0 :(得分:3)
MSAL4J用于获取令牌,以便客户端可以访问受保护的资源,而不是用于验证API中的令牌。
您的API应该在授权标头中接收访问令牌。 article解释了访问令牌中可能包含哪些声明以及如何验证它们。
Microsoft目前没有为此验证提供Java库,但是有许多第三方开放源代码库提供此功能。例如,您可以使用jjwt
答案 1 :(得分:0)
您看到过这个MSAL4J B2C sample,它调用了受保护的网络api吗?
样本中的Here包括访问令牌,从用户登录时开始,并将其作为不记名令牌附加到标头。然后,一个中间件库(例如Java的Spring Security)将验证令牌。
private String callB2CApi(String accessToken){
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("Authorization", "Bearer " + accessToken);
HttpEntity<String> entity = new HttpEntity<>(null, headers);
String result = restTemplate.exchange(authHelper.configuration.api, HttpMethod.GET,
entity, String.class).getBody();
return new Date() + result;
}
更多information on using MSAL4J可以用来创建可登录用户然后调用受保护的Web api的Web应用。更多code samples用于调用受保护的Web api。
这里是overview of the b2c token types。 idToken包含有关用户的声明,访问令牌为您的Web api提供范围权限。