【问题标题】:WSO2 IS: Custom Federated Authenticator using same form as basic authenticatorWSO2 IS:使用与基本身份验证器相同的形式的自定义联合身份验证器
【发布时间】:2020-06-04 02:32:29
【问题描述】:

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

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

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

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

  • 重复使用相同的表单并在幕后处理不同的案例
  • 根据用户名模式将责任分配给自定义和联合身份验证器

有没有人设法做类似的事情?是否有可能实现我想要做的事情?

【问题讨论】:

  • 如果用户名是“Power User XXXX”,你需要调用外部API。该 API 是验证该用户凭据还是仅批准访问?
  • 两者兼得。它验证用户凭据并批准他们访问用户尝试登录的相应服务提供商。

标签: java wso2 wso2is wso2carbon


【解决方案1】:

对于您的用例,您可以write a local authenticator 扩展默认的BasicAuthenticator

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


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

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

【讨论】:

  • 谢谢@senthalan。您的第一个建议与我尝试做的很接近,但是我开始扩展文档中描述的抽象而不是 BasicAuthenticator。我将使用这种方法重新访问并更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 2011-03-18
  • 1970-01-01
相关资源
最近更新 更多