带有 WebAuthN 的 Identity Server 4 - 使用 GrantType (FIDO 2.0)

Identity Server 4 with WebAuthN - using GrantType (FIDO 2.0)

我正在使用 Identity Server 4 通过 WebAuthN (https://w3c.github.io/webauthn/) 对用户进行身份验证。

我有多个客户端命中了一个 api 客户端。我的 api 客户端负责决定使用哪个身份验证提供程序、传递数据(服务器到服务器、服务器到外部 api)并协调身份验证过程。

我们使用的一个身份验证提供者是我们拥有的身份服务器 4,这是我们实现 WebAuthN 的地方。

我不确定在 Identity Server 4 中实现它的推荐方法是什么。我只有 2 个选项

  1. 在身份服务器上创建一个 API 端点以向用户凭据进行身份验证
  2. 创建扩展授权类型并使用新授权类型调用 TokenEndpoint API(我的扩展授权类型将是内置混合授权类型后跟 WebAuthN 代码的混合)。

从安全的角度来看,这两种方式是否有效(不开洞)并且适合 ID4 还是有其他方式?

我最近做了一些实现这个的工作,但目前仅针对第二因素。

长话短说,它需要在最终用户浏览器的上下文中 运行(假定它是 JavaScript API),所以它确实需要内置到通过 authorize 端点登录流程。

例如(假设不存在本地客户端或 IDP 会话):

  1. 用户访问客户端应用程序
  2. 客户端重定向到 authorize 端点
  3. 授权端点重定向到交互式身份验证 UI 然后决定使用什么方法
  4. 进行 WebAuthn 质询,验证结果并建立会话 cookie
  5. 重定向回 authorize 端点
  6. 发行令牌并重定向回客户端

您还需要为用户提供一种方法来注册他们的身份验证器。生成的凭据与站点来源相关联,因此这必须在您的 identityserver4 实施中完成 - 将执行挑战的同一应用程序。