我正在为我的 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();
}
如果这不是正确的请求方式,那么正确的方式是什么?
请查看以下答案,看看是否对您有帮助: 如何使用刷新令牌AzureAD获取访问令牌
此外,此 Microsoft 文档提供了详细信息和示例: https://learn.microsoft.com/en-us/advertising/guides/authentication-oauth-get-tokens?view=bingads-13