MSAL(Java)Rest API身份验证(授权:承载令牌)

时间:2020-02-14 17:48:59

标签: java azure-active-directory msal

我想针对Azure AD B2C保护Java Rest API。

我知道调用方正在使用Authorization标头调用服务,其值如下:Bearer xxx-token

是ID还是访问令牌?

服务应采取哪些步骤来确保这是一个有效的令牌?使用MSAL4J的Java代码将不胜感激。

2 个答案:

答案 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提供范围权限。