想知道如何进行身份验证(例如):
http://www.example.com:8080/openam/UI/Login?realm=CUR&module=CURAuthn
最好通过REST在/ json / authenticate上发布JSON。
我猜它会http://www.example.com:8080/openam/UI/Login?realm=CUR&authIndexType=module&authIndexValue=CURAuthn正确吗?
在任何情况下,此模块都不会使用标准的X-OpenAM-Username或X-OpenAM-Password标头。
它需要一堆自定义字段,称为ID令牌。例如,它使用IDToken1,IDToken2,IDToken3,......
我应该如何使用json身份验证服务向此插件提交令牌?感谢
答案 0 :(得分:2)
所有这些都在OpenAM's Developer's Guide第3.4节中解释。
自定义模块的REST URL将是:
http://www.example.com:8080/openam/json/authenticate?authIndexType=module&authIndexValue=CURAuthn
如果您的模块没有使用标准的用户名/密码凭据,那么您必须将请求正文中的凭据作为JSON传递。
首先向OpenAM发送一个空的POST请求:
$ curl \
--request POST \
--header "Content-Type: application/json" \
http://www.example.com:8080/openam/json/authenticate?authIndexType=module&authIndexValue=CURAuthn
您应该得到与此相似的响应(基于您的自定义回调):
{
"authId": "eyAid...GDYaEQ",
"template": "",
"stage": "Module11",
"header": "Using CURAuthn",
"callbacks": [
{
"type": "NameCallback",
"output": [
{
"name": "prompt",
"value": "FirstCallback"
}
],
"input": [
{
"name": "IDToken1",
"value": ""
}
]
},
{
"type": "NameCallback",
"output": [
{
"name": "prompt",
"value": "SecondCallback"
}
],
"input": [
{
"name": "IDToken2",
"value": ""
}
]
},
//More callbacks here
]
}
之后只需从用户输入中收集凭据,填写空值并将JSON有效负载提交回相同的URL。确保你使用相同的" authId"整个身份验证过程。
我写了一篇关于自定义身份验证链的blog post以及如何通过REST与它们进行通信。看一看,它可能会有所帮助。