nonce
字段。然后,我们将无法在后端对其进行验证(出于安全原因,Microsoft不允许我们执行此操作)。grant_type:client_credentials
client_id:xxxxx-1ff5-4615-8d71-yyyyyy
client_secret:[7aCw] fdsfsfsfds.AC61Fg:cm33
scope:https://vault.azure.net/.default
] >>手动使用下面的代码验证了上面收到的令牌,并且工作正常
IConfigurationManager<OpenIdConnectConfiguration> configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>("https://login.microsoftonline.com/TestDomain310320.onmicrosoft.com/v2.0/.well-known/openid-configuration", new OpenIdConnectConfigurationRetriever());
OpenIdConnectConfiguration openIdConfig = AsyncHelper.RunSync(async () => await configurationManager.GetConfigurationAsync(CancellationToken.None));
TokenValidationParameters validationParameters =
new TokenValidationParameters
{
ValidIssuer = "https://sts.windows.net/a3d2bff3-87dd-497c-b894-f63befdd7496/",
ValidAudiences = new[] { "https://vault.azure.net" },
IssuerSigningKeys = openIdConfig.SigningKeys
};
SecurityToken validatedToken;
JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
var user = handler.ValidateToken(token, validationParameters, out validatedToken);
修改的参数已成功接收AAD令牌,但使用上述代码的令牌验证失败,并显示错误消息“ IDX10511:签名验证失败。尝试的键:'[PII被隐藏]'。 ”具有上述客户端ID的经过验证的AAD应用具有“ user.read/user.read.basicall权限”。如果使用Scope:https://graph.microsoft.com/.default] >>从AAD收到令牌,为什么令牌验证失败?观察:
通过
scope:https://vault.azure.net/.default
]]收到的令牌> {
"typ": "JWT",
"alg": "RS256",
"x5t": "YMELHT0gvb0mxoSDoYfomjqfjYU",
"kid": "YMELHT0gvb0mxoSDoYfomjqfjYU"
}
虽然使用接收的令牌具有额外的[[nonce属性以避免重播攻击,这是令牌验证失败的原因吗?
{
"type": "JWT",
"nonce": "wCXLm9rF5Nma2S7OswU44uAVRpVbM_20WrWJkqbWe6Y",
"alg": "RS256",
"x5t": "YMELHT0gvb0mxoSDoYfomjqfjYU",
"kid": "YMELHT0gvb0mxoSDoYfomjqfjYU"
}
请提出建议。从AAD接收的访问令牌,使用以下URL https://login.microsoftonline.com/gdfdddddd-87dd-497c-b894-xxxxxx/oauth2/v2.0/token grant_type:client_credentials client_id:xxxxx-1ff5-4615-8d71 -...
nonce
字段引起的。 nonce
字段。然后,我们将无法在后端对其进行验证(出于安全原因,Microsoft不允许我们执行此操作)。Authorization
标头中。您为什么要验证令牌?如果您正在读取应用程序中不属于您的经过验证的Apis令牌作为身份验证的证明,那么您就将自己设置为失败。另外,这也是一个安全问题,因为世界上任何可以获取KeyVault或MS图的访问令牌的应用程序都可以将其传递给您的Apis并对其进行破坏。