首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft令牌验证

Microsoft令牌验证
EN

Stack Overflow用户
提问于 2022-10-05 08:18:16
回答 2查看 216关注 0票数 0

我收到一个JWT令牌(ID令牌),如何正确地验证它?据我所知,Microsoft对JWT令牌使用异步签名,因此我有两个问题:在哪里可以获得用于验证的公钥?第二,我如何使用它来验证呢?

为什么谷歌有一个官方的令牌验证库,而微软却没有?

我需要验证从Azure女士那里接收到的tokenId令牌--令牌本身,我访问了received,然后将其发送到服务器,在服务器上必须对其进行验证。下面是一个将tokenId显示到控制台的代码示例。

代码语言:javascript
复制
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;
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2022-10-05 08:36:20

这是非常普遍的,并有很多文章来实现这一点。请找出以下内容

Asp.Net核中的JWT实现

JWT令牌实现.Net 6.0

JWT令牌.Net的创建

Microsoft还有一个库来验证jwt令牌。

JWT如何验证令牌

令牌有三个主要部分:令牌类型& Algo、有效载荷和最后一个签名。

当您在.Net核心的应用程序中添加Jwt Configuartion时,那么

  1. 验证令牌 首先,它检查签名是否正确。如果有人篡改了签名,那么就抛出异常,因为令牌无效。

For this we provide validation parameter such as key, issuer and audience in TokenValidationParameters

代码语言:javascript
复制
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)
        };
    });
  1. 需要有效的有效载荷或索赔 我们可以创建中间件来验证有效负载或声明。并通过从有效负载中获取数据进行验证,并创建逻辑验证。

验证Azure AD的JWT令牌

可以使用Microsoft对其进行验证。

  1. 使ASP.NET核心web应用程序能够登录用户并调用Microsoft
  2. 保护沥青芯的应用

使用TokenValidationParameters遵循上述相同的步骤。Key、发行者和受众也可以在Azure AD的JWT TokenId中获得。从蔚蓝门户获取并在TokenValidationParameters中复制启动。

票数 0
EN

Stack Overflow用户

发布于 2022-10-06 03:26:55

为什么谷歌有一个官方的令牌验证库,而微软却没有?

你试过microsoft.identity.web包了吗?https://learn.microsoft.com/en-us/azure/active-directory/develop/microsoft-identity-web

我可以用它验证我的API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73957607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档