我想通过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后才能看到的应用程序。但我陷入了如何自动登录的困境。
答案 0 :(得分:0)
我猜url的值
"https://mytomcatlocalhost/itapp/app3/app3.jsp"
是您的应用程序URL而不是OpenAM REST身份验证URL ...您是否在jsp中的bean中使用OpenAM REST?
如果没有,您提供的代码实际上没有意义。