使Azure移动应用程序接受使用Node后端的自定义身份验证

时间:2016-02-15 09:32:27

标签: node.js azure authentication

我正在尝试使用Node.js后端在Azure移动应用程序(不是旧的移动服务)中实现自定义身份验证,我无法将操作转换为Node。之前的一个问题是使用.NET后端进行自定义身份验证"just works"。我无法获得

我复制了Joy of code's example JWT generationgist 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'..

1 个答案:

答案 0 :(得分:2)

我明白了。我需要

mobile.configuration.auth.validateTokens=false;
app.js中的

(或者更确切地说,没有将相同的变量设置为true)。