Подтверждение клиента находится за пределами допустимого диапазона времени.
В соответствии с вашим сообщением об ошибке, и ваша проблема возникает периодически, я думаю, что это может быть время региона вашего токена причиной проблемы .Время региона может иметь некоторый интервал времени с действительным временем вашего токена.
Итак, я предлагаю вам использовать DateTime.UtcNow
в качестве стандарта, чтобы установить время начала и окончания вашего токена.Вот пример кода, к которому вы можете обратиться.
private static async Task<string> GetClientAssertiotokenAsync(string tenantId,string clientId)
{
X509Certificate2 cert = new X509Certificate2(@"D:\Joey\Documents\joey.pfx", "password", X509KeyStorageFlags.MachineKeySet);
var now = DateTime.UtcNow;
var tokenHandler = new JwtSecurityTokenHandler();
var tokenDescriptor = new SecurityTokenDescriptor
{
Audience = $"https://login.microsoftonline.com/{tenantId}/oauth2/token",
Issuer = clientId,
NotBefore = now.AddHours(1),
Expires = now.AddHours(3),
Subject = new ClaimsIdentity(new[] {
new Claim("sub",clientId)}),
SigningCredentials = new X509SigningCredentials(cert)
};
SecurityToken token = tokenHandler.CreateToken(tokenDescriptor);
string tokenString = tokenHandler.WriteToken(token);
}
Для получения более подробной информации вы можете обратиться к этой статье .