java - WSO2 IS:使用与基本身份验证器相同的形式的自定义联合身份验证器
问题描述
我们正在我们的基础设施中引入 WSO2 身份服务器,并且需要有两种身份验证方法,但是 - 如果可能的话 - 使用相同的登录表单,而不重定向到外部表单(如 facebook 登录)。
这个想法是我们有“普通”和“高级”用户,普通用户将使用 WSO2 IS 提供的基本身份验证器进行身份验证(使用电子邮件作为用户名),而高级用户有特定类型的用户名(比如说“高级用户 XXXX ") 并且他们的身份验证正在来自现有 API 的特定资源上进行处理和批准。
所以,我想做的是拥有 WSO2 显示的基本身份验证表单,当我识别高级用户用户名格式时,将身份验证委托给上述 API。
我知道为了委托给外部服务,我需要引入一个联合身份验证器——这不是这里的问题。我的问题是如何执行以下操作:
- 重复使用相同的表单并在幕后处理不同的案例
- 根据用户名模式将责任分配给自定义和联合身份验证器
有没有人设法做类似的事情?甚至有可能实现我想要做的事情吗?
解决方案
对于您的用例,您可以编写一个扩展默认BasicAuthenticator的本地身份验证器。
在 processAuthenticationResponse 中,您可以检查用户名模式并调用外部 API 并对用户进行身份验证,否则您可以调用 super
还有另一种选择,我们可以实现专用的身份验证器和页面来使用外部 API 进行身份验证。
在 SP 配置中,首先设置一个标识符作为第一步,然后设置默认的基本和自定义身份验证器作为第二步。然后从标识符中提供的用户名中首先选择第二步验证器。这可以通过身份验证脚本中的“authenticationOptions”来完成
推荐阅读
- java - Why does the JVM send multiple JVMTI ClassLoad events for the same class?
- django - Django access to language code in filter function
- hadoop - Hive 动态分区 - “默认情况下,Hive 不允许您创建动态分区,除非您至少有一个静态分区”
- python - python if不等于beautifulsoup和urllib
- python - Python 格式回溯
- python - 将字符串转换为字典
- python-3.x - ImportError:无法导入名称 getoutput
- django - Django导航链接不起作用
- javascript - 如何在距离矩阵 Google API 服务中输入客户端 ID 或 API 密钥
- matlab - 绘制置信区间信号的平均值