SamlCredential 不从 Okta SAML 响应中检索组属性
SamlCredential does not retrieve group attributes from Okta SAML response
我正在使用 Okta 作为 IDP,我已经像这样配置了用户属性语句和组属性语句
通过提供自定义 samluserdetails,我能够检索用户属性但不能检索组属性。
public class CustomSamlUserDetails implements SAMLUserDetailsService {
@Override
public Object loadUserBySAML(SAMLCredential cred) throws UsernameNotFoundException {
AppUser user = new AppUser();
user.setFirstName(cred.getAttributeAsString("firstName"));
user.setLastName(cred.getAttributeAsString("lastName"));
user.setLoginId(cred.getAttributeAsString("loginId"));
String groupname = cred.getAttributeAsString("role"); // comes null
return user;
}
}
我是否遗漏了某些配置,或者我是否以错误的方式检索组信息?
编辑:
例如,如果我对某些字符使用 contains
过滤器,我有 3 个组 test1、test2 和 other1。
如果我使用 contains
过滤器 *,我得到空值。
但是,如果我将 contains
过滤器与 test 一起使用,我会得到 test1 (和 test2,如果用户是两个组的路径)。
在组的情况下不支持 wildchar 吗?
如果在上述情况下用户是所有 3 个组的一部分怎么办?
我不是 OKTA 的专家,但我开始为我的一位客户工作几周。我用 * 测试过,但它只适用于过滤器正则表达式。对于其他过滤器,我从未成功使用 *。例如,没有 * 的配置对我来说非常有效。
OKTA CONFIG
我用了代码String str = credential.getAttributeAsString("Groups");
但我有一个问题,当我有超过一组时,我仍然得到一组。我想改为使用组列表。
编辑 - O6 Feb
最后我重新测试了,我能够使用正则表达式实现通配符条目我使用了正则表达式过滤器:
在 java 中,我按照你的建议得到了组 :
String[] str = credential.getAttributeAsStringArray("groups");
for(int i = 0; i< str.length; i++){
System.out.println(str[i]);
}
结果是:
祝你有美好的一天
我正在使用 Okta 作为 IDP,我已经像这样配置了用户属性语句和组属性语句
通过提供自定义 samluserdetails,我能够检索用户属性但不能检索组属性。
public class CustomSamlUserDetails implements SAMLUserDetailsService {
@Override
public Object loadUserBySAML(SAMLCredential cred) throws UsernameNotFoundException {
AppUser user = new AppUser();
user.setFirstName(cred.getAttributeAsString("firstName"));
user.setLastName(cred.getAttributeAsString("lastName"));
user.setLoginId(cred.getAttributeAsString("loginId"));
String groupname = cred.getAttributeAsString("role"); // comes null
return user;
}
}
我是否遗漏了某些配置,或者我是否以错误的方式检索组信息?
编辑:
例如,如果我对某些字符使用 contains
过滤器,我有 3 个组 test1、test2 和 other1。
如果我使用 contains
过滤器 *,我得到空值。
但是,如果我将 contains
过滤器与 test 一起使用,我会得到 test1 (和 test2,如果用户是两个组的路径)。
在组的情况下不支持 wildchar 吗?
如果在上述情况下用户是所有 3 个组的一部分怎么办?
我不是 OKTA 的专家,但我开始为我的一位客户工作几周。我用 * 测试过,但它只适用于过滤器正则表达式。对于其他过滤器,我从未成功使用 *。例如,没有 * 的配置对我来说非常有效。
OKTA CONFIG
我用了代码String str = credential.getAttributeAsString("Groups");
但我有一个问题,当我有超过一组时,我仍然得到一组。我想改为使用组列表。
编辑 - O6 Feb
最后我重新测试了,我能够使用正则表达式实现通配符条目我使用了正则表达式过滤器:
在 java 中,我按照你的建议得到了组 :
String[] str = credential.getAttributeAsStringArray("groups");
for(int i = 0; i< str.length; i++){
System.out.println(str[i]);
}
结果是:
祝你有美好的一天