Чтобы проверить id_token или access_token, ваше приложение должно проверить как подпись токена , так и претензий .Вы можете вручную проверить токен с помощью jwt.io или также можете использовать код.
Чтобы вручную проверить токен, сначала необходимо проверить его подпись.Токены, выпущенные Azure AD, подписаны с использованием отраслевых стандартных алгоритмов асимметричного шифрования, заголовок JWT содержит информацию о ключе и методе шифрования, используемом для подписи токена.
Примечание: утверждение alg
указывает алгоритм, который использовался для подписи токена, в то время как утверждение kid
указывает конкретный открытый ключ, который использовался для подписи токена.Конечная точка v1.0 возвращает утверждения x5t и kid, в то время как конечная точка v2.0 отвечает только заявкой child.
Это образец заголовка токена v1.Здесь вы можете использовать значение kid
, чтобы найти соответствующий открытый ключ (x5c
) в jwks_uri , используя документ метаданных OpenID Connect .
И затем в jwt.io вставьте значение x5c в поле открытого ключа в формате:
и в следующем формате:
Подробнее см. Здесь .
Если выЕсли вы хотите использовать код для проверки токена, для вас есть пример:
public JwtSecurityToken Validate(string token)
{
string stsDiscoveryEndpoint = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint);
OpenIdConnectConfiguration config = configManager.GetConfigurationAsync().Result;
TokenValidationParameters validationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateIssuer = false,
IssuerSigningTokens = config.SigningTokens,
ValidateLifetime = false
};
JwtSecurityTokenHandler tokendHandler = new JwtSecurityTokenHandler();
SecurityToken jwt;
var result = tokendHandler.ValidateToken(token, validationParameters, out jwt);
return jwt as JwtSecurityToken;
}
Подробнее о примере кода см. В этом случае .