如何解决SAML 2.0 RelayState参数:如何在WSO2 IS中向登录表单添加额外的字段?
我需要在WSO2 IS的自定义登录页面中添加一个额外的组合框(其中包含要显示的产品版本)。成功登录后,应该将combox的选择传递给服务提供商。如here所述,所选内容可以作为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,authorities);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。