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

Identityserver4 带有WebAuthN的Identity Server 4-使用GrantType(FIDO 2.0),identityserver4,webauthn,fido,Identityserver4,Webauthn,Fido,我使用Identity Server 4使用WebAuthN()对用户进行身份验证 我有多个客户端命中一个api客户端。我的api客户端负责决定使用哪个身份验证提供程序、传递数据(服务器到服务器、服务器到外部api)以及协调身份验证过程 我们使用的一个身份验证提供程序是identity server 4,这就是我们实现WebAuthN的地方 我不确定在Identity Server 4中实现此功能的推荐方法是什么。我有两个选择 在identity server上创建API终结点以向凭据用户进行身

我使用Identity Server 4使用WebAuthN()对用户进行身份验证

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

我们使用的一个身份验证提供程序是identity server 4,这就是我们实现WebAuthN的地方

我不确定在Identity Server 4中实现此功能的推荐方法是什么。我有两个选择

  • 在identity server上创建API终结点以向凭据用户进行身份验证
  • 创建一个扩展授权类型,并使用新的授权类型调用TokenEndpoint API(我的扩展授权类型是内置混合授权类型和WebAuthN代码的混合)

  • 从安全角度来看,这两种方法都是有效的(没有打开漏洞)并且适合ID4吗?还是有其他方法?

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

    长话短说,它需要在最终用户浏览器的上下文中运行(考虑到它是一个JavaScript API),因此实际上它需要通过
    authorize
    端点构建到登录流中

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

  • 用户访问客户端应用程序
  • 客户端重定向到
    授权
    端点
  • 授权端点重定向到交互式身份验证UI,然后由该UI决定使用何种方法
  • 执行WebAuthn质询,验证结果并建立会话cookie
  • 重定向回
    授权
    端点
  • 发出令牌并重定向回客户端

  • 您还需要为用户提供一种注册其验证器的方法。生成的凭据与站点源站绑定,因此必须在您的
    identityserver4
    实现中完成此操作-与将要完成此挑战的应用程序相同。

    谢谢,听起来不错。第4步的一个问题是,这应该在哪里处理?客户端应用程序?标识?步骤4将在标识中处理,作为基于浏览器的交互式登录流程的一部分。查看示例web应用程序,它会让您很好地了解它是如何组合在一起的。