我正在尝试使用Node.js后端在Azure移动应用程序(不是旧的移动服务)中实现自定义身份验证,我无法将操作转换为Node。之前的一个问题是使用.NET后端进行自定义身份验证"just works"。我无法获得
我复制了Joy of code's example JWT generation(gist here)。我这样调用它(内联aud和userId):
zumoJWT(expiry,"MyAud","MyAud:1455527189540927",req.azureMobile.configuration.auth.secret);
我的注册API返回以下JSON
{"user":{"userid":"MyAud:1455527189540927"},"token":"a lot of base64"}
我使用此代码放入Android MobileServiceClient
JsonObject userob=ob.get("user").getAsJsonObject();
MobileServiceUser user=new MobileServiceUser(userob.get("userid").getAsString());
user.setAuthenticationToken(ob.get("token").getAsString());
mClient.setCurrentUser(user);
这给了我错误信息
com.microsoft.windowsazure.mobileservices.MobileServiceException:{“name”:“JsonWebTokenError”,“message”:“无效签名”
下次我调用API。如何让我的应用程序接受登录令牌?
编辑:服务器端日志说
2016-02-15T11:42:35 PID[180] Warning JWT validation failed: IDX10500: Signature validation failed. Unable to resolve SecurityKeyIdentifier: 'SecurityKeyIdentifier
(
IsReadOnly = False,
Count = 1,
Clause[0] = System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause
)
',
token: '{"alg":"HS256","typ":"JWT","kid":0}.{"exp":null,"iss":"urn:microsoft:windows-azure:zumo","ver":2,"aud":"MyAud","uid":"MyAud:1455534835642715"}
RawData: a lot of base64'..
答案 0 :(得分:2)
我明白了。我需要
mobile.configuration.auth.validateTokens=false;
app.js中的(或者更确切地说,没有将相同的变量设置为true)。