带有 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 个选项
- 在身份服务器上创建一个 API 端点以向用户凭据进行身份验证
- 创建扩展授权类型并使用新授权类型调用 TokenEndpoint API(我的扩展授权类型将是内置混合授权类型后跟 WebAuthN 代码的混合)。
从安全的角度来看,这两种方式是否有效(不开洞)并且适合 ID4 还是有其他方式?
我最近做了一些实现这个的工作,但目前仅针对第二因素。
长话短说,它需要在最终用户浏览器的上下文中 运行(假定它是 JavaScript API),所以它确实需要内置到通过 authorize
端点登录流程。
例如(假设不存在本地客户端或 IDP 会话):
- 用户访问客户端应用程序
- 客户端重定向到
authorize
端点
- 授权端点重定向到交互式身份验证 UI 然后决定使用什么方法
- 进行 WebAuthn 质询,验证结果并建立会话 cookie
- 重定向回
authorize
端点
- 发行令牌并重定向回客户端
您还需要为用户提供一种方法来注册他们的身份验证器。生成的凭据与站点来源相关联,因此这必须在您的 identityserver4
实施中完成 - 将执行挑战的同一应用程序。
我正在使用 Identity Server 4 通过 WebAuthN (https://w3c.github.io/webauthn/) 对用户进行身份验证。
我有多个客户端命中了一个 api 客户端。我的 api 客户端负责决定使用哪个身份验证提供程序、传递数据(服务器到服务器、服务器到外部 api)并协调身份验证过程。
我们使用的一个身份验证提供者是我们拥有的身份服务器 4,这是我们实现 WebAuthN 的地方。
我不确定在 Identity Server 4 中实现它的推荐方法是什么。我只有 2 个选项
- 在身份服务器上创建一个 API 端点以向用户凭据进行身份验证
- 创建扩展授权类型并使用新授权类型调用 TokenEndpoint API(我的扩展授权类型将是内置混合授权类型后跟 WebAuthN 代码的混合)。
从安全的角度来看,这两种方式是否有效(不开洞)并且适合 ID4 还是有其他方式?
我最近做了一些实现这个的工作,但目前仅针对第二因素。
长话短说,它需要在最终用户浏览器的上下文中 运行(假定它是 JavaScript API),所以它确实需要内置到通过 authorize
端点登录流程。
例如(假设不存在本地客户端或 IDP 会话):
- 用户访问客户端应用程序
- 客户端重定向到
authorize
端点 - 授权端点重定向到交互式身份验证 UI 然后决定使用什么方法
- 进行 WebAuthn 质询,验证结果并建立会话 cookie
- 重定向回
authorize
端点 - 发行令牌并重定向回客户端
您还需要为用户提供一种方法来注册他们的身份验证器。生成的凭据与站点来源相关联,因此这必须在您的 identityserver4
实施中完成 - 将执行挑战的同一应用程序。