实现一些涉及 Android 应用程序和 NFC 的 OpenID 身份验证用例的想法/建议

问题描述 投票:0回答:1

我正在开展一个项目,我们希望集成一些涉及移动设备和 NFC 标签的额外身份验证机制。为了简化解释问题,人们可以想象某种用户签入/签出功能。

概要/愿景:

  • 应用程序管理员可以将NFC标签分配给我们系统中的现有用户,一个NFC标签只能分配给单个用户

  • 将会有多个永久安装的 Android 设备安装了我们的应用程序

  • Android 应用程序对设备附近的 NFC 标签做出反应,并向我们的后端发送签入/签出请求

  • 应用程序最好应该使用我们现有的 REST API,我们已经从我们的 Web 应用程序中使用它(在登录用户的上下文中)

  • 签入/签出(在后端)应在 NFC 标签代表的用户上下文中进行

  • Android 应用程序将处理多个用户的签入/签出(NFC 标签)

不清楚的地方:

  • Android 应用程序如何将自身“连接”到我们的后端(UX 尽可能简单)?

  • 如何在 NFC 标签代表的用户上下文中调用现有的 REST API?

一般来说,我们希望更喜欢使用 OpenID 连接等标准协议,并将自定义/专有身份验证代码减少到最低限度。作为我们常规用户登录的 IDP 实现,我们目前使用 Keycloak。

你们对如何实现此类用例的身份验证有任何指示或建议吗?

android authentication openid-connect nfc openid
1个回答
0
投票

正如您所发现的,可以实现一些本机移动逻辑,但这不会为您提供后端 API 凭据。以下注释可能不会为您提供可行的解决方案,但描述了基于 OAuth 的解决方案的外观。请注意,我在这里向后工作,从所需的 API 行为开始:

  1. API 接收包含用户身份和其他声明的 OAuth 访问令牌。

  2. 授权服务器发出

    claims from authentication
    来访问令牌。这可能包括运行时上下文,例如设备 ID 或身份验证强度。

  3. 授权服务器接收基于 NFC 的身份验证详细信息并对其进行验证。此服务器端工作可以实现为

    plugin
    ,代表自定义身份验证方法,并公开 REST 端点。

  4. 运行本机代码以通过基于 NFC 的操作对用户进行身份验证。这可能包括 Webauthn 流程的选项(例如通过 NFC 提供的 Yubikey)或更基本的选项。本机代码会将结果发布到上述端点。

  5. 应用程序启动 OpenID Connect 重定向到授权服务器,如 RFC8252 中所述。这将打开系统浏览器,然后应将其关闭,以便将控制权返回到应用程序以在设备上执行本机身份验证。

总结

因此,在您的用例中,用户将首先通过某种滑动或扫描操作进行身份验证。然后,应用程序将使用访问令牌多次调用 REST API,例如签入。

理想情况下,上述类型的解决方案不需要打开系统浏览器,这会让用户感到困惑,并妨碍本机操作。

在我工作的 Curity,我们一直在投资名为

Hypermedia Authentication API
的东西,以便在 OAuth 上下文中最好地启用上述类型的本机用例。

上述答案旨在描述典型要求,以及如何使用 OAuth 的安全构建块。

© www.soinside.com 2019 - 2024. All rights reserved.