通过REST对自定义OpenAM 12身份验证插件进行身份验证

时间:2016-05-10 01:26:43

标签: json rest http openam

想知道如何进行身份验证(例如):

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身份验证服务向此插件提交令牌?感谢

1 个答案:

答案 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与它们进行通信。看一看,它可能会有所帮助。