是否可以在 Keycloak 中为每个用户添加多个电子邮件?
Is it possible to add more than one email per user in Keycloak?
我通过 Google、Microsoft 等使用 Keycloak 进行身份代理。但是 Keycloak 只允许每个用户一封电子邮件。因此用户只能通过社交登录选项之一进行身份验证(Google 如果将 gmail 添加为用户的电子邮件地址等)。有没有办法让每个用户包含多个电子邮件,或任何其他解决方法?
编辑:(根据评论进行编辑以使场景更清晰)
在我的场景中,我使用的是一个包含大量用户的联合用户存储,并且我需要 Keycloak 在用户使用 Google 登录时访问链接到该用户的所有电子邮件,蔚蓝等因为 Keycloak 使用电子邮件作为来自社交登录提供商的身份验证响应的唯一标识符。如果没有所需的电子邮件作为主要电子邮件,Keycloak 将不允许该用户通过社交 IdP
登录
尽管 Keycloak 强调保留唯一的电子邮件,但在某些情况下您可能希望保留辅助电子邮件。
这可以通过几个步骤实现:
1.像这样在用户中为辅助电子邮件添加自定义属性:
2。接下来,在您的客户端中创建这样的属性映射器:
当我在上述配置后生成令牌时,新属性在令牌中可用。您可以根据需要在您的应用中使用此属性。
已解析的 JWT:
我发现处理此问题的最佳方法是通过自定义用户提供程序(联合用户存储)。即使我们不能通过 Keycloak 管理控制台为每个用户添加多个电子邮件,我们也可以编写用户提供程序,使其可以从我们的数据库中获取所有电子邮件 linked 给用户并将它们分配给每个用户的电子邮件属性。完成后,所有电子邮件也将显示在管理控制台上。
为了让社交登录识别这些电子邮件,我们必须将所有电子邮件 link 发送给提供程序中的用户的数组并遍历它,直到身份验证完成。这将有助于通过 First Login Broker 身份验证流程为用户创建社交登录 link。
这是一种粗略的处理方法,但它确实有效!
我通过 Google、Microsoft 等使用 Keycloak 进行身份代理。但是 Keycloak 只允许每个用户一封电子邮件。因此用户只能通过社交登录选项之一进行身份验证(Google 如果将 gmail 添加为用户的电子邮件地址等)。有没有办法让每个用户包含多个电子邮件,或任何其他解决方法?
编辑:(根据评论进行编辑以使场景更清晰)
在我的场景中,我使用的是一个包含大量用户的联合用户存储,并且我需要 Keycloak 在用户使用 Google 登录时访问链接到该用户的所有电子邮件,蔚蓝等因为 Keycloak 使用电子邮件作为来自社交登录提供商的身份验证响应的唯一标识符。如果没有所需的电子邮件作为主要电子邮件,Keycloak 将不允许该用户通过社交 IdP
登录尽管 Keycloak 强调保留唯一的电子邮件,但在某些情况下您可能希望保留辅助电子邮件。
这可以通过几个步骤实现:
1.像这样在用户中为辅助电子邮件添加自定义属性:
2。接下来,在您的客户端中创建这样的属性映射器:
当我在上述配置后生成令牌时,新属性在令牌中可用。您可以根据需要在您的应用中使用此属性。
已解析的 JWT:
我发现处理此问题的最佳方法是通过自定义用户提供程序(联合用户存储)。即使我们不能通过 Keycloak 管理控制台为每个用户添加多个电子邮件,我们也可以编写用户提供程序,使其可以从我们的数据库中获取所有电子邮件 linked 给用户并将它们分配给每个用户的电子邮件属性。完成后,所有电子邮件也将显示在管理控制台上。
为了让社交登录识别这些电子邮件,我们必须将所有电子邮件 link 发送给提供程序中的用户的数组并遍历它,直到身份验证完成。这将有助于通过 First Login Broker 身份验证流程为用户创建社交登录 link。
这是一种粗略的处理方法,但它确实有效!