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 还是有其他方式?

4

1 回答 1

0

我最近在实现这一点上做了一些工作,但此时仅针对第二个因素。

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

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

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

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

于 2019-10-21T08:59:55.570 回答