Ajax登录并以json(OpenAM)获取数据

时间:2014-07-25 04:26:15

标签: ajax json authentication openam

我想通过OpenAM点击不同的按钮后以不同的用户身份登录并自动显示结果。我尝试使用OpenAM开发指南但不知道。

http://openam.forgerock.org/openam-documentation/openam-doc-source/doc/dev-guide/#chap-rest 3.3.1。身份验证&注销 (这是wt openam说的)

  

##最简单的用户名/密码验证返回tokenId   应用程序可以作为其他操作的cookie值   需要身份验证。在这种情况下使用HTTP POST来防止   Web容器记录凭据。将用户名传递给   X-OpenAM-Username标头和X-OpenAM-Password中的密码   报头中。

[-]
$ curl \
 --request POST \
 --header "X-OpenAM-Username: demo" \
 --header "X-OpenAM-Password: changeit" \
 --header "Content-Type: application/json" \
 --data "{}" \
 https://openam.example.com:8443/openam/json/authenticate
{ "tokenId": "AQIC5w...NTcy*", "successUrl": "/openam/console" }
     

此"零页面登录"机制仅适用于名称/密码身份验证。如果您在请求中包含POST正文,则必须包含该正文   是一个空的JSON字符串,如示例中所示。或者,你   可以将POST主体留空。否则,OpenAM会解释正文   作为现有身份验证尝试的延续,使用的是   支持的回调机制。

     

/ json / authenticate中的身份验证服务支持回调   使其可以执行其他类型的机制   身份验证以及简单的用户名/密码登录。

     

基于客户端内容未完成的回调   HTTP请求以JSON形式返回,作为对请求的响应。每   callback有一个适合显示到最后的输出数组   用户和输入,这是客户端必须完成并发回的内容   到OpenAM。默认仍为用户名/密码验证。


我的代码main.html

$('#try').click(function(){
    var uid="user";
    var password="password";

    $.ajax({
        type: "POST",
        url: "https://mytomcatlocalhost/itapp/app3/app3.jsp",
        dataType: "jsonp",
        crossDomain: true,
        headers: {"X-OpenAM-Username":uid,"X-OpenAM-Password":password},
        contentType:"application/json",

        success: function(Jdata) {
            alert("h");
        }}

<button id="try">user 1</button>

但我不确定回调是做什么的,以及我的方向是否正确。 app3.jsp是一个只允许用户成功登录openAM后才能看到的应用程序。但我陷入了如何自动登录的困境。

1 个答案:

答案 0 :(得分:0)

我猜url的值

"https://mytomcatlocalhost/itapp/app3/app3.jsp"

是您的应用程序URL而不是OpenAM REST身份验证URL ...您是否在jsp中的bean中使用OpenAM REST?

如果没有,您提供的代码实际上没有意义。