Spring Security 用户从Azure AD SSO登录登录后,无法使用Sping Boot 代码在请求标头中为所有rest调用设置授权承载令牌

eeq64g8w  于 2023-08-05  发布在  Spring
关注(0)|答案(1)|浏览(157)

用户SSO登录到应用程序后,所有其余调用的所有请求头中都需要Id_token(授权承载)值,但目前它不在头中。如果有任何方法可以获得授权承载令牌并在所有请求头中设置。下面的登录请求具有response_type作为id_token,在有效载荷中获得id_token,但在所有请求头中需要id_token,

https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/authorize?
    client_id=<ClientId>
    &response_type=id_token
    &redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fdashboard%2F
    &response_mode=form_post
    &scope=openid
    &state=12345
    &nonce=678910

字符串

6ojccjat

6ojccjat1#

您可以使用下面的代码在请求头中设置授权承载令牌,以便使用Sping Boot 代码进行rest调用。

我的控制器:

@GetMapping(value = "/getmanagementgroup")
    public static String getManagementGroup() throws Exception {
        String access_token = getToken();
        System.out.println("My Tokenis " + access_token);
        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        headers.add("Authorization", "Bearer " + access_token);
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.exchange(
                "https://management.azure.com/providers/Microsoft.Management/managementGroups?api-version=2020-05-01",
                HttpMethod.GET, new HttpEntity<>("parameters", headers), String.class);
        return response.getBody();
    }

字符串

输出:

在我的例子中,我使用上面给出的代码使用spring Boot 检索管理组。


的数据

参考文献:

  • 请参考我的github repository以获取完整代码。*

相关问题