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

Authenticate to custom OpenAM 12 authentication plugin via REST

想知道如何验证(例如):

http://www.example.com:8080/openam/UI/Login?realm=CUR&module=CURAuthn

最好通过 /json/authenticate 上的 REST 发布 JSON。

我猜 http://www.example.com:8080/openam/UI/Login?realm=CUR&authIndexType=module&authIndexValue=CURAuthn 正确吗?

在任何情况下,此模块都不采用标准 X-OpenAM-Username 或 X-OpenAM-Password headers。

它需要一堆自定义字段,称为 ID 令牌。例如,它使用 IDToken1、IDToken2、IDToken3、...

我应该如何使用 json 身份验证服务将令牌提交到此插件?谢谢

所有这些都在 OpenAM's Developer's Guide 第 3.4 节中进行了解释。

您的自定义模块的 REST URL 将是:

http://www.example.com:8080/openam/json/authenticate?authIndexType=module&authIndexValue=CURAuthn

如果您的模块不使用标准 username/password 凭据,您必须在请求正文中以 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 与它们通信的文章。看看,也许会有帮助。