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.