我们要求针对现有外部数据库对WSO2 Application Server中部署的Web应用程序的用户进行身份验证。我们正在尝试使用WSO2 Identity Server。
我们的包含用户的数据库表有两列,这些列使用户名唯一,clientid和usercode。即,用户代码本身并不是唯一的,但是clientid + usercode是唯一的。我们的密码也用PBKDF2加盐。所以我扩展了JDBCUserStoreManager以与我们的数据库通信,并且能够在PBKDF2中存储和检索密码。
但我无法弄清楚如何从登录页面获取客户端ID到扩展的JDBCUserStoreManager。即如何从我们的自定义JDBCUserStoreManager内部访问存储在用户会话中的clientid?如果我可以从那里的会话中获得clientid,我可以在sql查询中使用它来做必要的事情。
非常感谢任何帮助解决这个问题。
答案 0 :(得分:1)
您可以在登录页面输入“clientid + usercode”组合作为用户名。然后,身份验证器会将该组合作为用户名传递给自定义用户管理器的doAuthenticate()方法。在那里,您可以从用户名中拆分客户端ID和用户代码。