Worklight не может войти в приложение, защищенное с помощью ltpatoken sso

При попытке проверить мою рабочую конфигурацию LTPA sso я не могу войти в свое приложение. Однако я могу войти в защищенную консоль рабочего освещения через LTPA (без запроса имени пользователя / пароля), поэтому я знаю, что токен LTPA проходит проверку корректно.

Когда я использую консоль worklight для доступа к своему защищенному приложению, я получаю 500 ошибок от вызовов common/init и common/login, потому что сервер worklight вызывает меня для аутентификации.

Это на рабочем свете 6.1.0.2. Я приложил трассировку Wireshark ответа сервера Worklight здесь:

Unauthorized
X-Powered-By: Servlet/3.0
P3P: policyref="/w3c/p3p.xml", CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY     ONL UNI COM NAV INT DEM PRE"
WWW-Authenticate: WL-Composite-Challenge
Content-Type: application/json; charset=UTF-8
Cache-Control: no-cache, no-store, must-revalidate
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Content-Length: 96
Content-Language: en-US
Connection: Close
Date: Fri, 05 Jun 2015 21:23:48 GMT

/*-secure-
{"challenges":{"wl_antiXSRFRealm":{"WL-Instance-Id":"kp3k4l8812ubp1d3ir6oeub9t2"}}}*/

Вот моя аутентификация Config.xml

<staticResources>
    <resource id="worklightConsole" securityTest="CustomAdapter-securityTest">
        <urlPatterns>/console*</urlPatterns>
    </resource>
</staticResources>

<securityTests>

    <customSecurityTest name="CustomAdapter-securityTest">
        <test isInternalUserID="true" realm="CustomAuthenticationRealm"/>
    </customSecurityTest>


</securityTests>
<realms>
    <realm loginModule="CustomLoginModule" name="CustomAuthenticationRealm">
      <className>com.worklight.core.auth.ext.WebSphereFormBasedAuthenticator</className>
        <parameter name="login-page" value="/login.html"/>
        <parameter name="error-page" value="/loginError.html"/>
        <parameter name="cookie-name" value="LtpaToken2"/>
    </realm>
</realms>

<loginModules>
<loginModule name="CustomLoginModule">
        <className>com.worklight.core.auth.ext.WebSphereLoginModule 
        </className>
        <parameter name="httponly-cookie" value="true" />
        <parameter name="cookie-name" value="LtpaToken2" />
</loginModule>
</loginModules>

В случае, если вам это нужно, вот проволочная часть запроса, отправляемого в Worklight common/init (мой LTPAToken удален для безопасности)

POST /AnywhereWorkManager/apps/services/api/WorkExecution/common/init HTTP/1.1
accept: text/javascript, text/html, application/xml, text/xml, */*
accept-language: en-US
connection: close
content-length: 65
content-type: application/x-www-form-urlencoded; charset=UTF-8
host: <the internal host>
referer: https://<the external host>/AnywhereWorkManager/apps/services/preview/WorkExecution/common/0/default/index.html
user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
via: HTTP/1.1 <the external host>
x-wl-app-version: 1.0
origin: https://<the external host>
iv_server_name: reverseproxy-webseald-<the external host>
x-wl-platform-version: 6.1.0.01.20140311-2356
x-requested-with: XMLHttpRequest
Cookie: LtpaToken2=<mytoken>; JSESSIONID=<mysessionid>; testcookie=oreo

skin=&skinLoaderChecksum=&isAjaxRequest=true&x=0.8017935899551958

1 ответ

На соединении webseal была настройка, которую я должен был установить, чтобы webseal игнорировал 401 и передавал его пользователю. Из руководства sso Worklight, задокументированного здесь..

http://www-01.ibm.com/support/docview.wss?uid=swg24034222

Параметр HTTP Basic Authentication Header: Ignore (-b ignore) необходим для обеспечения дополнительного обмена рукопожатием при аутентификации устройства между клиентом и сервером Worklight. IBM Security Access Manager обрабатывает ошибку 401 и возвращает ее клиенту, что предотвращает дальнейшую обработку в приложении. Использование основного заголовка проверки подлинности HTTP: Игнорировать устраняет ошибку обработки 401.

Параметр "Включить файл cookie сеанса (-k)" заставляет WebSEAL пересылать файл cookie сеанса пользователя на подключенный сервер. Это позволяет извлекать файл cookie сеанса WebSEAL из заголовков запросов, которые можно использовать для обеспечения единого входа в соединенные системы, доступ к которым осуществляется через адаптеры Worklight.

Другие вопросы по тегам