【发布时间】:2021-12-21 18:11:33
【问题描述】:
我们有一个使用 firebase phone auth 在生产中运行的 react-native 应用程序。最近,我们收到了来自拥有新华为设备的用户无法使用 Firebase 对其电话号码进行身份验证的反馈。
由于很多用户开始遇到这个问题,我们决定只为 HarmonyOS 下的设备实施华为身份验证服务,并为其他用户保留常规的 firebase 电话身份验证。
在我们的 react-native 应用程序中集成 Huawei App Gallery Connect Auth SDK 后,我们能够接收 OTP 并使用 credentialWithVerifyCode 登录用户,我们还能够使用检索用户的令牌
idToken =(await (await AGCAuth.getInstance().currentUser()).getToken()).token;
idToken 是一个 JWT 令牌,看起来像这样
eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbiI6IjVCMzQ5OTM5ODBFNEYxRUQwNDBDOTBEMjA1Q0U4QTJCNzRFMTg3RkUyRDNDQzY4N0E3MUVCMUZFQ0VBMDZDQTEifQ.xtAXTzfpzqRHAvDP3fJjdctnNoFHFmqawWJBGqG4y3qBSeo1XNHFyNOPnL-V6BCmkpxGIO3eq2eYJShIJhad-A
里面的payload包含另一个token(不是JWT),但我们认为这不是问题,我们也尝试了一个包含所有用户信息的token。
将 JWT 发送到我们的 .NET core 3.1 Web API 后,我们无法使用 JwtBearerExtensions.AddJwtBearer 验证令牌
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(
JwtBearerDefaults.AuthenticationScheme,
o =>
{
o.Authority = "https://oauth-login.cloud.huawei.com";
});
权限设置为https://oauth-login.cloud.huawei.com,其中颁发者设置为https://accounts.huawei.com,这似乎关闭,因为在firebase中,颁发者看起来更像:https://securetoken.google.com/YOUR_PROJECT
我们得到的错误是:
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException: IDX10503: Signature validation failed. Keys tried: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.
Exceptions caught:
'[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.
token: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]'.
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)
at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
info: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[7]
发生错误可能是因为权限不正确。
我们无法找出问题所在,我们无法找到验证令牌所需的权限。
【问题讨论】:
标签: android .net-core huawei-mobile-services huawei-developers appgallery-connect