2
  • 我们有一个 iPad 应用程序显示来自 drupal 站点的内容(仅提供 json 文件)。
  • 我们的 IT 部门在 drupal 站点前放置了一个 SSO。WebSEAL 用于实现 SSO。
  • 因此,当我们从浏览器访问 drupal 站点时,我们将被重定向到登录页面(表单身份验证),我们需要输入 Windows 用户名和密码才能继续。

当我们尝试从 ipad 访问 json 文件时,我们得到 401 状态,其中包含 html 内容和登录页面的 url。我们尝试通过在标头中发送用户名和密码来使用基本身份验证,但没有成功。谷歌搜索没有给出任何有用的解决方案。

有人有类似的问题吗?我只需要一种使用非浏览器客户端的用户名和密码进行身份验证的方法。

示例节点 js 代码

var http = require('http');


var username = 'username';
var password = 'password';
var auth = "Basic " + new Buffer(username + ":" + password).toString("base64");


var options = {
  host: 'devhome.intranet.example.com',
  port: 80,
  path: '/app/api/rest/views/category.json',
  headers : {
    "Authorization" : auth
  }
};

http.get(options, function(res) {
  console.log("Got response: " + res.statusCode);
  console.log(res);
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});

非常感谢任何帮助。

谢谢

4

2 回答 2

3

我知道这是一个老问题,但我尝试做非常相似的事情(.Net 客户端访问 WebSeal 后面的 Web 服务)。谷歌搜索后没有有用的解决方案。

但是 IBM 文档给了我一个线索 http://www.ibm.com/support/knowledgecenter/SSPREK_8.0.1.2/com.ibm.isamw.doc_8.0.1.2/wrp_config/task/tsk_submt_form_data_ws.html

基本上,当您从浏览器通过 Webseal 访问资源时,Webseal 会使用登录页面进行响应。输入用户名和密码后,表单数据将提交到 /pkmslogin.form 。Webseal 还返回一个 cookie,因此不必再次验证后续请求。

这意味着您需要发送一个 POST 请求:

必须对 /pkmslogin.form 进行 POST。POST 请求正文必须包含三个字段的字段数据:用户名、密码、登录表单类型

对于表单登录,login-form-type 的值必须是“pwd”。content-length 标头必须指示生成的请求正文的长度。

我在 .Net 中使用 HttpClient 做到了这一点。像这样的东西:

using (var httpClient = new HttpClient())
{
    // First post the authentication data
    var authenticationResult = httpClient.PostAsync("http://webseal/pkmslogin.form", 
        new FormUrlEncodedContent(
            new Dictionary<string, string>()
            {
                {"username", "user"},
                {"password", "pwd"},
                {"login-form-type", "pwd"}
            }
        )
    ).Result;
    // Now access our resource
    var webserviceResult = httpClient.GetAsync("http://webseal/webservice").Result;
}

如果这不起作用,您可能需要通过 WebSeal 获取 Cookie 返回并每次发送该 Cookie。

于 2016-07-08T14:24:14.760 回答
0
------------------------------------------------------------------------------------
STEP (1)
------------------------------------------------------------------------------------
WEBSEAL URL: https://webseal/pkmslogin.form
METHOD     : POST
TYPE       : FormUrlEncodedContent
HEADER     : Content-Type: application/x-www-form-urlencoded
BODY       : login-form-type: pwd, password: XXXXXXXX, username: AAAAAAAA
-------------------------------------------------------------------------------------


200 OK

content-length: 818
content-type: text/html
date: Thu, 28 Jun 2099 19:58:54 GMT
p3p: CP="NON CUR OTPi OUR NOR UNI"
server: WebSEAL/6.0.0.3 (Build 060807)
pragma: no-cache
cache-control: no-cache
Set-Cookie: PD-S-SESSION-ID=2_Uufb+DPeYhDCsF2cjib-aQO6LwMn3VNM1faxbUOGbLKXqwBO; Path=/; Secure


STEP (2)
-------------------------------------------------------------------------------------
ENGAGE URL : https://webseal/engagetv/EngageAgent/MainPage.aspx?windowtype=popup&action_name=startactivity&jobTypeCode=A25&custPkey=0018048794_77
METHOD     : GET 
HEADER     : Set-Cookie: PD-S-SESSION-ID=2_Uufb+DPeYhDCsF2cjib-aQO6LwMn3VNM1faxbUOGbLKXqwBO; Path=/; Secure


200 OK

content-type: text/html; charset=utf-8
date: Thu, 28 Jun 2099 20:09:40 GMT
p3p: CP="NON CUR OTPi OUR NOR UNI"
x-old-content-length: 28754
transfer-encoding: chunked
x-powered-by: ASP.NET
x-ua-compatible: IE=9
cache-control: private
Set-Cookie: Eng5800TicketData=TtyXO3QjJu4qSQAYI6u5rZJr7ZCDRne10O1dt9e5BgPuU02sgszMUKwWOKlSyDVeMnfXyM4XJfe93tv4lQpxgpVKzScTGzK8sIsUiOSX5gHZWtPWcGW+axoaiZcH2+g9to+JvudPAtWvP/7Ikd88qwhCCRLv0KgSBXrpYkh6UlFOe3SDGuor/3/NX9dQbXA9zCqBymhR7W2ZEDYq37lStCKsEOvzV/sUyrAAHGYpptFZzIYIDwuytUpkMi3S6n1ZaDuysxjCjVNvNez5w+M3QF2bzMf625cvlCpJSb1WSnc1ZLbSxMRLXRCrWw/jJKJ1z7c7fPJozwwks/UQyTcRUkdPmwgjiNphT9+c7+LF74k75JAayMYkjR5lD79brFl5oFquck6zyZMCCy8445N98owHOr0vqqtZZaa7qKjZDOaUprx8LD4Qlzn+/YsMEMvgBFDTt1sKdv+SUGkVPi53AzPEkrpmD0H8pdEM6GOS2gXnYZw1tf6hDf3ZDVeGrl9k2ETn6XqDuQoB80af16Ew64TXMHSQgDtur9tndltcp2nqu0Grv04ov6TZKkloAPSZZcQ6ezgivlsASyLupFBKgtcUbC1L92vuf2YVPYA0oBSqOzIsRDe2f3gqNxcBOR9/vmGAhinQ5WzgSo9BkAbGTx/ooqk6kUMbwX2bvKth1SV5oDH5hkrOdnc2pkfpByipTE8lGxvGR1r6PeY7r3WHdfDy8c4HUpLWl3BCKckrmTvIPi2llpkzVRGyWrFVWpb2X/jF+MnGvcdH9Vo7PVvn7seD9TlXXo/ef8RRUmLmykUfxxDgrA1+qru0qu7STDpW4YYY/DPGPVlqg3sX4LRt5w==; Path=/
Eng5800Theme=Default; Path=/
PD-S-SESSION-ID=2_RZOySBlG-n-s7rUo7AiXIWgujUyyWN5674O4AOlW1W3W1-9n; Path=/; Secure
...
...
于 2018-06-28T20:32:33.287 回答