我目前正在进行一个项目,在该项目中,我们使用OpenID Connect和Oauth2以及Keycloft的默认表单。
我们有实施2FA的要求。在理想的情况下,我们会将keycapture表单全部丢弃,只使用keycapture作为无头API,并在主应用程序本身中构建登录表单。
原因是
- 我们在Vue.js中内置了一些组件,希望重复使用(例如密码/代码输入、密码强度指示器等(
- 我们不想在两个不同的项目中保持相同的风格
- 我们不想维护或受自定义模板的限制
- 不想在vanilla js中编写自定义行为
在进行研究后,我发现不建议使用keycapture作为API,因为客户端和第三方登录之间的重定向作为附加的安全层,并且是OAuth2.0模型的一部分。我们正在存储用户的医疗信息,因此安全性是一个问题。
你们有什么建议?
您说得对,不建议通过API使用OAuth服务器。重定向是OAuth流安全性的重要组成部分。这当然造成了您提到的所有缺点——必须维护具有相同功能的多个代码库。
这个问题的一个解决方案是使用具有强大安全机制的超媒体API,它可以用于执行OAuth流。不幸的是,这还不是一个标准,它是一个新兴的特性。你可以在这里阅读这样一个API是如何工作的,在这里你可以找到我们在Curity实现的安全功能的深入描述。
目前在Key斗篷中实现它肯定不是一项容易的任务,但很可能没有其他选择来解决这个问题——正如你所说,你需要2FA,如果没有2FA,一个选择就是使用资源所有者密码流。