问题描述
正在开发一个在AWS上托管的微服务应用程序,希望通过Amazon API Gateway由全球各个组织的终端用户访问。用户希望使用KeyCloak作为用户认证服务器(2FA)。KeyCloak将为经过身份验证的用户生成JWT令牌,并将JWT令牌传递给AWS API Gateway以授权访问微服务。
KeyCloak将托管在AWS的公共VPC子网中。此外,用户还计划在另一个子网或可能是同一个子网的同一个VPC中使用PrivacyIdea作为OTP代码生成器和分发器。用户还计划在同一个或另一个VPC子网中设置一个电子邮件网关。
PrivacyIdea将生成OTP代码,可能使用HOTP,并通过电子邮件网关将其发送到用户的邮箱。用户的企业电子邮件地址将在PrivacyIdea中设置。这些用户也将在KeyCloak中设置。用户的想法是,PrivacyIdea生成并通过电子邮件发送的OTP代码将与用户的登录ID和密码一起输入到KeyCloak生成的登录表单中,然后进行用户身份验证。
KeyCloak作为认证服务器和使用电子邮件OTP代码是用户无法更改的架构选择。
用户的问题是,KeyCloak只直接支持Google Authenticator或FreeOTP移动短信或应用程序OTP;因此,用户不得不引入PrivacyIdea和电子邮件网关。用户希望得到关于如何进行OTP种子和OTP代码的通信以及如何共享OTP数据库的技术指导或经验。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
您可以使用新的privacyidea keycloak提供程序,而无需将任何OTP值推送到keycloak数据库中。
用户使用用户名/密码登录,privacyidea提供程序将负责向用户发送电子邮件,并在第二个对话框中要求输入OTP。
您可以在以下链接中找到更多关于privacyidea keycloak提供程序的信息:https://github.com/privacyidea/keycloak-provider
方案2
请注意,这是一个用户评论,可能需要进一步验证。
用户评论:是的,谢谢。我已经看过KeyCloak Provider并打算尝试一下。@JoeBoyP37,这个解决方案对您有效吗?
以上是两种解决方案,您可以根据您的需求选择适合您的方案。
希望对您有所帮助!