Ajax 登录并以 json 格式获取数据 (OpenAM)
Posted
技术标签:
【中文标题】Ajax 登录并以 json 格式获取数据 (OpenAM)【英文标题】:Ajax login and get data as json (OpenAM) 【发布时间】:2014-07-25 04:26:15 【问题描述】:一旦我通过 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 格式返回,作为对请求的响应。每个 回调有一个适合显示到最后的输出数组 用户和输入,这是客户端必须完成并发回的内容 到 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】:我猜是 url 的值
"https://mytomcatlocalhost/itapp/app3/app3.jsp"
是您的应用 URL,而不是 OpenAM REST 身份验证 URL ...您是否在 jsp 中的 bean 中使用 OpenAM REST?
如果不是,您提供的代码实际上没有意义。
【讨论】:
以上是关于Ajax 登录并以 json 格式获取数据 (OpenAM)的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 query() 获取 wordpress 帖子并以 json 格式输出?
调用 wcf 休息服务并以 xml 或 json 格式返回数据