我需要在WSO2IS中的自定义登录页面中添加一个额外的组合框(其中包含要显示的产品版本(。组合框的选择应在成功登录后传递给服务提供商。正如这里所说的,选择可以作为RelayState参数传递。我仍然找不到如何使用WSO2 IS实现这一点的示例。所以问题是:我如何在IS端使用RelayState参数进行设置,以及如何在服务提供商端获得其值?任何关于java的例子都值得高度评价!
SAML有两个流
- IdP启动
- SP启动
中继状态:是在IdP启动流中帮助您的一个参数。如果服务提供商端有多个应用程序,并且在SAML断言之后,如果需要确定用户必须登录到哪个应用程序中,则可以使用中继状态。您可以直接在中继状态参数中配置应用程序URL,也可以配置一些值来帮助您识别应用程序。
要实现此功能,应在您的IdP中启用IdP启动的SSO。
在WSO2 IdP中有SSO设置。您可以在那里获得RelayState配置。我确实为其他IdP配置了RelayState,这可以很容易地配置。
以下代码可用于在SP侧上获得RelayState
public Object loadUserBySAML(SAMLCredential credential)
throws UsernameNotFoundException {
// The method is supposed to identify local account of user referenced by
// data in the SAML assertion and return UserDetails object describing the user.
String userID = credential.getNameID().getValue();
String relayState = credential.getRelayState();
LOG.info(userID + " is logged in");
return new User(userID, "<abc123>", true, true, true, true, authorities);
}