所有这些都在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 与它们通信。看看吧,也许会有帮助。