我是 OIDC 和 WebAuthn 的新手。我想为我的用户提供渐进式无密码体验。据我所知,Windows/Mac/iOS/Android 支持密钥。 我想配置 Keycloak 客户端,以便它可以使用 OIDC 流进行身份验证。但我有两个问题。
我应该使用哪种 OIDC 流程?我知道使用隐式流是不好的。我给出了什么选择,因为我正在开发移动应用程序,所以我无法使用授权授予流程。在手机应用程序上打开网络视图来提供指纹对我来说似乎很奇怪。
我应该如何为我的 Keycloak 客户端配置身份验证覆盖,以便默认后备是用户名和密码。但如果用户有密钥,那么它会默认这样的机制吗?
应用程序每当需要对用户进行身份验证时都会运行
authorization code flow
。使用密钥,它的工作原理如下:
授权服务器接收授权请求并将 HTML 表单返回到实现密钥 UX 准则的浏览器。然后用户调用浏览器对话框。如果使用外部设备(例如 yubikey),这些对话框会与操作系统平台密钥 API 或 FIDO2 API 进行交互。
在移动应用程序中,在 Chrome 自定义选项卡或 ASWebAuthenticationSession 窗口中运行代码流,它看起来非常集成。
你是对的,它不完全是本地密钥。为此,OAuth 消息需要以不同的方式工作:
将来我希望通过 OAuth 可以实现无浏览器流程,但这尚未包含在标准中。在此之前,请使用基于浏览器的方法并实现代码流。然后,您将密钥的复杂性外部化到授权服务器,并获得正确的访问令牌来调用您的 API。