Azure AD Jwt令牌验证无互联网
Azure AD Jwt令牌验证无互联网,azure,authentication,.net-core,jwt,azure-active-directory,Azure,Authentication,.net Core,Jwt,Azure Active Directory,我有一个.net核心web api,它运行在公司内部网A中的计算机上,并且没有internet访问权限。 然后我在内部网B中有一个网站,该网站在Azure AD中经过身份验证。 我想用头身份验证:JwtTokenFromAzure将请求从B发送到A 验证此令牌的最佳选项是什么?要验证id\u令牌或access\u令牌,您的应用程序应验证令牌的签名和声明。 您可以使用手动验证令牌,也可以使用代码 要手动验证令牌,应首先验证令牌的签名。Azure AD发行的令牌使用行业标准的非对称加密算法进行签名,
我有一个.net核心web api,它运行在公司内部网A中的计算机上,并且没有internet访问权限。
然后我在内部网B中有一个网站,该网站在Azure AD中经过身份验证。
我想用头
身份验证:JwtTokenFromAzure
将请求从B发送到A验证此令牌的最佳选项是什么?要验证id\u令牌或access\u令牌,您的应用程序应验证令牌的签名和声明。 您可以使用手动验证令牌,也可以使用代码 要手动验证令牌,应首先验证令牌的签名。Azure AD发行的令牌使用行业标准的非对称加密算法进行签名,JWT的头包含有关用于签名令牌的密钥和加密方法的信息 注意:
alg
claim表示用于对请求签名的算法
令牌,而kid
声明表示
用于在令牌上签名。v1.0端点返回x5t和
kid声明,而v2.0端点只响应kid声明
这是一个v1令牌头示例。在这里,您可以使用kid
值在中查找相关的公钥(x5c
)
然后在jwt.io中,将x5c值粘贴到公钥框中,格式如下:
格式如下:
有关详细信息,您可以阅读
如果您想使用代码验证令牌,下面是一个示例:
公共JwtSecurityToken验证(字符串令牌)
{
字符串stsDiscoveryEndpoint=”https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
ConfigurationManager configManager=新的ConfigurationManager(stsDiscoveryEndpoint);
OpenIdConnectConfiguration config=configManager.GetConfigurationAsync().Result;
TokenValidationParameters validationParameters=新的TokenValidationParameters
{
ValidateAudience=false,
validateisuer=false,
IssuerSigningTokens=config.SigningTokens,
ValidateLifetime=false
};
JwtSecurityTokenHandler-tokendHandler=新的JwtSecurityTokenHandler();
SecurityToken jwt;
var result=tokendHandler.ValidateToken(令牌、validationParameters、out jwt);
将jwt作为JwtSecurityToken返回;
}要验证id\u令牌或访问令牌,您的应用程序应验证令牌的签名和声明。 您可以使用手动验证令牌,也可以使用代码 要手动验证令牌,应首先验证令牌的签名。Azure AD发行的令牌使用行业标准的非对称加密算法进行签名,JWT的头包含有关用于签名令牌的密钥和加密方法的信息 注意:
alg
claim表示用于对请求签名的算法
令牌,而kid
声明表示
用于在令牌上签名。v1.0端点返回x5t和
kid声明,而v2.0端点只响应kid声明
这是一个v1令牌头示例。在这里,您可以使用kid
值在中查找相关的公钥(x5c
)
然后在jwt.io中,将x5c值粘贴到公钥框中,格式如下:
格式如下:
有关详细信息,您可以阅读
如果您想使用代码验证令牌,下面是一个示例:
公共JwtSecurityToken验证(字符串令牌)
{
字符串stsDiscoveryEndpoint=”https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
ConfigurationManager configManager=新的ConfigurationManager(stsDiscoveryEndpoint);
OpenIdConnectConfiguration config=configManager.GetConfigurationAsync().Result;
TokenValidationParameters validationParameters=新的TokenValidationParameters
{
ValidateAudience=false,
validateisuer=false,
IssuerSigningTokens=config.SigningTokens,
ValidateLifetime=false
};
JwtSecurityTokenHandler-tokendHandler=新的JwtSecurityTokenHandler();
SecurityToken jwt;
var result=tokendHandler.ValidateToken(令牌、validationParameters、out jwt);
将jwt作为JwtSecurityToken返回;
}如果有人遇到此问题,如果您的令牌在标头中包含nouse字段,则无法验证令牌的签名。MS希望您通过调用graph API来验证它。如果令牌有效,则调用将成功。否则它将失败。请参阅:如果有人遇到此问题,如果您的令牌在头中包含nouse字段,则无法验证令牌的签名。MS希望您通过调用graph API来验证它。如果令牌有效,则调用将成功。否则它将失败。见: