OPEN ID 连接请求刷新访问令牌

问题描述 投票:0回答:1

我正在为我的 Web 应用程序实施带有 Open ID 连接的 Azure Ad。登录后,我间歇性地收到过期的令牌,这导致生命周期验证失败。我认为我需要的是请求具有新生命周期的刷新访问令牌。

这是我到目前为止所掌握的关于如何请求的内容,但没有运气。我也尝试过不同的终点,但不太确定哪个是正确的。某些端点需要 GET 方法而不是 POST。

            var accessToken = await HttpContext.GetTokenAsync("access_token");
            var tokenEndpoint = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
            //tokenEndpoint = "https://login.microsoftonline.com/{myClientID}/v2.0";
            var clientId = "myClientID";
            var clientSecret = "mySecret";
            var refreshToken = await HttpContext.GetTokenAsync("refresh_token");
            
            var requestData = new[]
            {
                new KeyValuePair<string, string>("client_id", clientId),
                new KeyValuePair<string, string>("client_secret", clientSecret),
                new KeyValuePair<string, string>("grant_type", "refresh_token"),
                new KeyValuePair<string, string>("refresh_token", refreshToken),
            };

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                client.DefaultRequestHeaders.Add("Accept", "application/json");
                var response = await client.PostAsync(tokenEndpoint, new FormUrlEncodedContent(requestData));

                response.EnsureSuccessStatusCode();

                var json = await response.Content.ReadAsStringAsync();

            }

如果这不是正确的请求方式,那么正确的方式是什么?

azure-active-directory openid-connect
1个回答
0
投票

请查看以下答案,看看是否对您有帮助: 如何使用刷新令牌AzureAD获取访问令牌

此外,此 Microsoft 文档提供了详细信息和示例: https://learn.microsoft.com/en-us/advertising/guides/authentication-oauth-get-tokens?view=bingads-13

© www.soinside.com 2019 - 2024. All rights reserved.