首页 > 解决方案 > WSO2 IS:使用与基本身份验证器相同的形式的自定义联合身份验证器

问题描述

我们正在我们的基础设施中引入 WSO2 身份服务器,并且需要有两种身份验证方法,但是 - 如果可能的话 - 使用相同的登录表单,而不重定向到外部表单(如 facebook 登录)。

这个想法是我们有“普通”和“高级”用户,普通用户将使用 WSO2 IS 提供的基本身份验证器进行身份验证(使用电子邮件作为用户名),而高级用户有特定类型的用户名(比如说“高级用户 XXXX ") 并且他们的身份验证正在来自现有 API 的特定资源上进行处理和批准。

所以,我想做的是拥有 WSO2 显示的基本身份验证表单,当我识别高级用户用户名格式时,将身份验证委托给上述 API。

我知道为了委托给外部服务,我需要引入一个联合身份验证器——这不是这里的问题。我的问题是如何执行以下操作:

有没有人设法做类似的事情?甚至有可能实现我想要做的事情吗?

标签: javawso2wso2iswso2carbon

解决方案


对于您的用例,您可以编写一个扩展默认BasicAuthenticator的本地身份验证器。

在 processAuthenticationResponse 中,您可以检查用户名模式并调用外部 API 并对用户进行身份验证,否则您可以调用 super


还有另一种选择,我们可以实现专用的身份验证器和页面来使用外部 API 进行身份验证。

在 SP 配置中,首先设置一个标识符作为第一步,然后设置默认的基本和自定义身份验证器作为第二步。然后从标识符中提供的用户名中首先选择第二步验证器。这可以通过身份验证脚本中的“authenticationOptions”来完成


推荐阅读