寻找一些答案。第一次在ASP.Net核心上使用Azure AD进行身份验证,我们已经在azure上为我的本地和开发服务器注册了应用程序。它在我的笔记本电脑上运行,但在部署到Dev服务器并更改客户端ID值后,它一直给我这个错误
*SecurityTokenInvalidSignatureException: IDX10511:签名验证失败已尝试的键:“System.Text.StringBuilder”。孩子:“System.String”。捕获的异常:“System.Text.StringBuilder”。令牌:'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(string令牌,TokenValidationParameters validationParameters)
异常:处理远程登录时遇到错误。Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.HandleRequestAsync()*
提前谢谢你。
丹尼
发布于 2021-10-16 10:48:30
感谢您@User 45323833将您的suggestion发布为答案,以帮助其他社区成员。
“来自的解决方案:由于您的应用程序注册而导致的此问题:
您可能已经通过Graph API定义了一个作用域:User.Read User.ReadBasic.All Mail.Read
如果从Graph API设置作用域,则只能从Graph验证令牌!
您可以看到,在jwt.io.中,如果aud类似于"00000003-0000-0000-c000-000000000000“,则令牌来自图。
要解决此问题,请执行以下步骤:
清单要保护我们自己的自定义
access_token/id_token。清单部分-公开一个
name = access_as_user
:将条目"accessTokenAcceptedVersion“从null更改为2
jwt.io检查来自azure的新令牌。如果aud等于已注册的应用程序id,则可以成功验证令牌。“有关更多信息,请参阅此GitHub issue IDX10511: Signature validation failed. Keys tried:和微软文档:Azure AD authentication with ASP.Net core web application
https://stackoverflow.com/questions/69589324
复制相似问题