我正在尝试运行查询以使用 SCIM 连接器在 OpenIAM 中执行用户搜索。在 Linux 虚拟机上进行测试,攻击 URL 并使用 OpenDJ,我可以通过用户的 id 过滤用户,并使用curl 命令并发出 GET 请求(如果它以 JSON 格式返回每个控制台的数据),但是当我运行该应用程序时,它会给我一个错误:java.lang.IllegalArgumentException:查询中存在非法字符
在 CentOs 控制台中,我使用此语句返回用户的 JSON:
curl --request GET --user admin:xxxxxxx "http://10.10.11.74:8081/api/users?_queryFilter=_id+pr&_prettyPrint=true"
输出:
{
"result" : [ {
"_id" : "Hector Un.Grifoll Un",
"_rev" : "00000000ffe5a0e4",
"_schema" : "frapi:opendj:rest2ldap:user:1.0",
"_meta" : {
"created" : "2019-03-15T10:49:53Z",
"lastModified" : "2019-06-11T14:44:46Z"
},
"userName" : "asasf@aaeg.ee",
"displayName" : [ "Hector Un Grifoll Un" ],
"name" : {
"givenName" : "Hector Un",
"familyName" : "Grifoll Un"
},
"contactInformation" : {
"emailAddress" : "asasf@aaeg.ee"
}
}
但是当我运行应用程序并将搜索 URL 放入字段中以使其自动化时,输出日志会显示非法字符异常。
这是我添加查询过滤器的字段。
2019-06-25 18:11:31.727 INFO 12162 --- [_TaskExecutor20] o.o.i.m.l.ConnectorResponseListener : Caught ADD response from connector in backend: Response{status=FAILURE, errorCode=null, errorText='Other Error:java.lang.IllegalArgumentException: Illegal character in query at index 37: 10.10.11.74/api/users?_queryFilter=id"Scott.Nelson"', responseValue=null, errorTokenList=null, stacktraceText=null}
我认为有一些Java不喜欢的东西,我猜可能有一些亲缘关系或关键,但无论如何我已经尝试过。
最佳答案
不应该是类似_queryFilter=id eq "Scott.Nelson"
吗?您可能需要对空格进行 url 编码。
关于java.lang.IllegalArgumentException : Illegal character OpenIAM-SCIM connector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758259/