我收到一个JWT令牌(ID令牌),如何正确地验证它?据我所知,Microsoft对JWT令牌使用异步签名,因此我有两个问题:在哪里可以获得用于验证的公钥?第二,我如何使用它来验证呢?
为什么谷歌有一个官方的令牌验证库,而微软却没有?
我需要验证从Azure女士那里接收到的tokenId令牌--令牌本身,我访问了received,然后将其发送到服务器,在服务器上必须对其进行验证。下面是一个将tokenId显示到控制台的代码示例。
export class AccountComponent implements OnInit {
constructor(private tokenService: TokenStorageService, private readonly _authService: SocialAuthService) { }
ngOnInit(): void {
this._authService.authState.subscribe(this.externalAccountLogin);
}
signInWithMicrosoft(){
this._authService.signIn(MicrosoftLoginProvider.PROVIDER_ID);
}
externalAccountLogin(user: SocialUser): void{
switch(user.provider){
case MicrosoftLoginProvider.PROVIDER_ID:
console.log(user.idToken);
break;
case GoogleLoginProvider.PROVIDER_ID:
//ToDo
break;
}
}
}发布于 2022-10-05 08:36:20
这是非常普遍的,并有很多文章来实现这一点。请找出以下内容
Microsoft还有一个库来验证jwt令牌。
JWT如何验证令牌
令牌有三个主要部分:令牌类型& Algo、有效载荷和最后一个签名。
当您在.Net核心的应用程序中添加Jwt Configuartion时,那么
For this we provide validation parameter such as key, issuer and audience in TokenValidationParameters
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
var Key = Encoding.UTF8.GetBytes(Configuration["JWT:Key"]);
o.SaveToken = true;
o.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["JWT:Issuer"],
ValidAudience = Configuration["JWT:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Key)
};
});验证Azure AD的JWT令牌
可以使用Microsoft对其进行验证。
使用TokenValidationParameters遵循上述相同的步骤。Key、发行者和受众也可以在Azure AD的JWT TokenId中获得。从蔚蓝门户获取并在TokenValidationParameters中复制启动。
发布于 2022-10-06 03:26:55
为什么谷歌有一个官方的令牌验证库,而微软却没有?
你试过microsoft.identity.web包了吗?https://learn.microsoft.com/en-us/azure/active-directory/develop/microsoft-identity-web
我可以用它验证我的API。
https://stackoverflow.com/questions/73957607
复制相似问题