繁体   English   中英

Azure移动应用程序-Node.js后端-Android客户端自定义身份验证

[英]Azure Mobile Apps - Node.js backend - Android Client Custom Authentication

我目前正在尝试在使用Azure移动应用程序作为后端构建的Android应用程序中实现自定义身份验证。 我关注了许多不同的信息,并觉得我正在圈子中,可能在此阶段缺少一些简单的东西。 我将尽可能详细地列出我所做的所有事情。

我想达到什么目的?

使用存储在数据库表中的登录凭据进行身份验证。

到目前为止我得到了什么?

到目前为止,我已经有一个自定义api来验证用户/密码凭据,然后使用'azure-mobile-apps / src / auth'返回一个JWT令牌

我的登录API的结果

为了使这个api工作正常,我使用了这个Github仓库作为参考。

我知道此令牌有效,因为当我尝试访问仅通过身份验证访问标记的api时,我会收到以下消息: 您必须登录才能使用此应用程序,但是当我将令牌作为标头附加到“ x-zumo”时-auth”,我可以毫无问题地访问api。

我在哪里卡住?

我被困在可以在Android客户端中接收令牌并尝试使用它认证MobileServiceClient的地步。 我尝试了几种不同的方法,但似乎无法找出正确的方法,我目前所拥有的是:

User user = new Gson().fromJson(result.getAsJsonObject().get("user"), User.class);
Log.d(TAG, "User: " + user.toString());
Log.d(TAG, result.getAsJsonObject().get("token").toString());
MobileServiceUser mobileServiceUser = new 
MobileServiceUser(user.getUsername());
mobileServiceUser.setAuthenticationToken(
                          result.getAsJsonObject().get("token").toString());
mClient.setCurrentUser(mobileServiceUser);

用户只是一个基本对象,其中包含从登录api返回的其他信息。

执行完上面的代码后,当我尝试访问需要身份验证的自定义api之一时,将得到以下stacktrace。 {}中没有消息,所以我真的只是不知道从这里出发。 也许有人以前这样做过,知道我想念的是什么?

java.util.concurrent.ExecutionException:com.microsoft.windowsazure.mobileservices.MobileServiceException:{} 09-29 09:12:43.151 17172-17370 / {package} W / System.err:位于com.google.common.util。 current.AbstractFuture.getDoneValue(AbstractFuture.java:500)09-29 09:12:43.151 17172-17370 / {package} W / System.err:at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture。 java:479)09-29 09:12:43.151 17172-17370 / {package} W / System.err:at com.google.common.util.concurrent.AbstractFuture $ TrustedFuture.get(AbstractFuture.java:76)09- 29 09:12:43.151 17172-17370 / {package} W / System.err:at ie.iskill.iskillmanagementmobile.azure.AzureServiceAdapter $ 3 $ 1 $ 1.run(AzureServiceAdapter.java:153)09-29 09:12:43.151 17172 -17370 / {package} W / System.err:at java.lang.Thread.run(Thread.java:818)09-29 09:12:43.151 17172-17370 / {package} W / System.err:由:com.microsoft.windowsazure.mobileservices.MobileServiceException:{} 09-29 09:12:43.151 17172-17370 / {package} W / System.err:在com.microsoft。 windowsazure.mobileservices.http.MobileServiceConnection $ 1.onNext(MobileServiceConnection.java:128)09-29 09:12:43.151 17172-17370 / {package} W / System.err:at com.microsoft.windowsazure.mobileservices.MobileServiceClient $ 15。 handleRequest(MobileServiceClient.java:1610)09-29 09:12:43.151 17172-17370 / {package} W / System.err:at com.microsoft.windowsazure.mobileservices.http.MobileServiceConnection.start(MobileServiceConnection.java:113) 09-29 09:12:43.151 17172-17370 / {package} W / System.err:at com.microsoft.windowsazure.mobileservices.http.RequestAsyncTask.doInBackground(RequestAsyncTask.java:78)09-29 09:12:43.151 17172-17370 / {package} W / System.err:at com.microsoft.windowsazure.mobileservices.http.RequestAsyncTask.doInBackground(RequestAsyncTask.java:35)09-29 09:12:43.151 17172-17370 / {package} W /System.err:位于android.os.AsyncTask $ 2.call(AsyncTask.java:292)09-29 09:12:43.151 17172-17370 / {package} W / System.err:位于java.util.concurrent.FutureTask .run(FutureTask.java:237)09-29 09:12:43.1 51 17172-17370 / {package} W / System.err:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)09-29 09:12:43.151 17172-17370 / {package} W / System。错误:位于java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)09-29 09:12:43.151 17172-17370 / {package} W / System.err:...还有1个

我尝试了什么?

事物的变化如此之多,以至于无法在此处列出全部内容是不可能的,我以前从未在这里发布过,因为我通常更喜欢对事物ash以沫以求解决,但这次我真的很沮丧。 我浏览了几个不同的问题,找到了一本“ zumo书”,其中包含有关AdrianHall进行自定义身份验证的一章(我的声誉无法链接两个以上的链接。)在一些问题中提到但找不到我的问题的答案。

如果我遗漏了任何有用的信息,请在回复中告诉我,以便尽快添加。

使用的Android SDK: 编译'com.microsoft.azure:azure-mobile-android:3.3.0@aar'

让我以以下内容开头作为开头:我很傻!

一切都在后端正常运行,因此为什么令牌在Postman上的x-zumo-auth标头上起作用。

但是,我使用以下代码提取令牌:

result.getAsJsonObject().get("token").toString()

当我应该具有以下内容时:

result.getAsJsonObject().get("token").getAsString()

这样做的原因是.toString()方法在我的令牌上留下了引号,因此不是用eySKANDadnzl65 ...而是用引号读为“ eySDKANDadnzl65 ...”。

这导致客户端返回无消息异常。 我只是通过多次读取日志并发现每次输出令牌时都附加了“”来注意到它。

我将把它留在这里,以防万一有人像我一样犯了这个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM