- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在一个项目中,我们将在微服务体系结构中使用不同的服务,并且我们还希望使用一些Firebase服务。我正在使用要在Firebase和其他API项目中使用的自定义JWT的身份验证服务器。
我们想使用Firebase Auth SDK轻松地与FB,Google,Twitter等集成,但是我们需要使用更多数据来丰富用户的令牌。因此,我的思考过程是创建一个使用Firebase Admin SDK的Node.JS身份验证服务器。流程如下:
用户使用客户端上的收藏夹提供程序登录
如果登录成功,则用户将从Firebase收到JWT。这被发送到身份验证服务器进行验证
如果身份验证服务器可以使用admin SDK验证令牌,请创建一个包含更多数据的新自定义令牌,然后将此新的自定义令牌返回给客户端
让客户端使用新的自定义令牌重新进行身份验证,并将其用于与Firebase和我们的其他API项目(主要在.NET Core中)进行通信
步骤1-3正常运行。尝试在其他服务上验证自定义令牌时出现问题。
TL; DR:此处有两个问题:
验证使用Firebase Node.JS Admin SDK发行的自定义令牌时,应使用什么作为公钥?是从Google公开的JWK中提取的密钥,还是从用于签名的私钥中提取的密钥?
如果采用JWK方法,应如何使用kid
标头构造自定义令牌?
首先,我对验证的正确方法感到怀疑。 (请原谅,创建OAuth流不是我的经验。)所使用的算法是RS256,因此我应该能够使用公钥来验证令牌。如我所见,有两种方法可以获取此密钥:
从私钥中提取公钥并进行验证。我可以执行此操作,并在我的身份验证服务器上的测试端点上成功验证,但是我认为这是错误的方法
我认为的另一种更正确的方法是使用令牌中的值在我的项目的Google“ /。well-known / openid-configuration /”端点上找到JWK,即
https://securetoken.google.com/ [项目ID] /。well-known / openid-configuration
检索正确的kid
(密钥ID)的指数和模数,并从中创建公钥。
通过执行以下操作从admin SDK生成的令牌
admin.auth().createCustomToken(uid, additionalClaims).then(function(customToken)
{
"alg": "RS256",
"typ": "JWT"
}
{
"claims": {
"premiumAccount": true,
"someRandomInnerObject": {
"something": "somethingRandom"
}
},
"uid": "<uid for the user>",
"iat": 1488454663,
"exp": 1488458263,
"aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
"iss": "firebase-adminsdk-le7ge@<PROJECT ID>.iam.gserviceaccount.com",
"sub": "firebase-adminsdk-le7ge@<PROJECT ID>.iam.gserviceaccount.com"
}
kid
标头,因此不符合OpenID规范(AFAIK),这导致两个选项之一:
kid
),而且我似乎无法使用为孩子创建的PEM密钥来验证生成的令牌。
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
最佳答案
在使用自定义令牌对Firebase客户端SDK重新进行身份验证之后,客户端实际上会使用自定义令牌中的声明生成一个新的ID令牌。该ID令牌是您用来验证对不同微服务的请求(记录为here)的工具。因此,可以,您原来的ID令牌将被丢弃,但是会在其位置创建一个新的令牌。并且该ID令牌将每小时自动刷新一次。因此,只要需要,您就应该能够调用user.getToken()
以获得有效的ID令牌。该方法代表您处理所有缓存。
关于node.js - Firebase Admin SDK的Node.js身份验证服务器-JWT验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42560558/
我正在细读 http://www.khronos.org/网站,只找到了 OpenCL 的头文件(不是我不关心的 OpenGL)。如何获取 OpenCL SDK? 最佳答案 AMD 的 ATI Str
Android 项目中最低(最低 sdk)和最高(目标 sdk)级别是否有任何影响。这些东西是否会影响项目的可靠性和效率。 最佳答案 没有影响,如果您以 SDK 级别 8 为目标,那么您的应用将以 9
“min sdk version/target sdk version”和“compile sdk version”有什么区别?我知道 min 和 target sdk 是什么意思,但是 compil
我正在尝试运行 Dji Mobile-Sdk-Android:https://github.com/dji-sdk/Mobile-SDK-Android使用 dji 网站上的说明:https://de
我目前正在向我的 iPhone 应用程序添加新的 Facebook iOS sdk 3.1.1。我看到 sdk 有重大变化。例如。我的旧 sdk 创建一个 Facebook 对象并从 FBReques
我最近刚刚下载了 Xcode 4.6 with mac 10.8.4 with iOS 6.0 SDK package,我立即注意到我无法使用我的 iPhone 3Gs with iOS 4.6 进行
我尝试下载 OpenCL SDK。但是没办法。我有一个 AMD GPU,所以我在谷歌上搜索了 AMD SDK,但是来自谷歌的所有链接和一些教程都被破坏了,不可能通过 AMD 开发者网站找到 sdk。
安装 Google Cloud SDK 后,当我运行时 gcloud 授权登录 我收到一条错误消息: Your browser has been opened to visit: https://a
我一直在 nvidia 网站上搜索 GPU 计算 SDK,因为我正在尝试构建具有 cuda 支持的点云库 (PCL)。但是,在 nvidia 网站上,我只能找到工具包的链接,而不是 SDK 的单个下载
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 2
当我打开 Android SDK 管理器时,会出现一个屏幕“选择要安装的包”。它列出了一堆带有绿色复选标记(已经安装)的软件包,还有一些带有 x's 的软件包,它们没有安装。如果我选择“全部接受”,它
在开发过程中,我发布了 SDK 21 Lollipop,但我无法在我的 KitKat 设备上使用它。应用程序非常简单,我只将 SDK 用于动画和 Material 设计,但是当我尝试对 Play 商店
enter image description here friend 们好 在使用 Linux、jenkins 和 docker 探索 dotnet 核心时,我遇到了构建问题,该问题在标题“/usr
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我创建了一个flutter项目,运行flutter packages get,输出如下:【二】flutter包搞定等待另一个 flutter 命令释放启动锁...第二次运行“flutter packa
这个问题在这里已经有了答案: What are the Android SDK build-tools, platform-tools and tools? And which version sh
我使用 Corona SDK 已经快一年了,并且开发了几个简单的游戏。我现在正在寻找的是在 Corona SDK 中创建 3D 幻觉的某种方法。如果有人有 Corona 3D 方面的经验,我将不胜感激
我有一个CLDC 1.1 / MIDP 2.0项目,可以使用Java ME SDK 3.2很好地进行编译。 最近,我已将Java SE升级到8,结果Java ME SDK开始在Windows启动时显示
有没有办法以编程方式控制连接到华擎主板的 RGB 照明?我知道华硕有一个 Aura SDK,但华擎是否也有一个用于他们的硬件? 如果是,我在哪里可以找到它? 最佳答案 没有用于华擎多彩的 sdk。但是
如何使用 crm 2011 sdk 和 XrmServiceContext 创建事务? 在下一个示例中,'new_brand' 是一些自定义实体。我想创建三个品牌。第三个拥有错误的 OwnerID g
我是一名优秀的程序员,十分优秀!