Смена состояния пользовательской веб сесси

Тема в разделе "Lotus - Xpages", создана пользователем lionk, 2 июн 2015.

  1. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    Вобщем вопрос вот какой.
    Можно ли как то сменить пользовательскую веб сессию с анонимной на авторизированную на стороне сервера (в ssjs к пирмеру).

    Читал статью как делают вход по гугол\фейсбук логину.
    Алгоритм простой:
    -пользователь с клиентской стороны логинится в гугле, получает подписаный гуглом аксес токен и отдаёт его серверу
    -сервер со своей стороны используя токен конектитя к гуглу и получает инфу о пользователе (например мыло)
    -и потом со своей стороны меняет статус веб-сесси от которой получил токен на авторизированную под именем, связаным с полученной почтой.

    вроде всё просто, в примере на PHP пользователя авторизировали одной командой.

    но как это сделать в лотусе?
     
  2. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Это использование CAS - типа такого: http://habrahabr.ru/post/130289/
    Самому интересно. Все в общем то обычно - главная затыка - сгенерировать LTPA токен для полученного от CAS пользователя...
     
  3. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
  4. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    А нафига в домине на авторизации токен? И зачем на гуглу смотреть? У него свои тараканы.
    Если юзер доминошный то:
    юзер конектится на хепагу, для которой разрешен anonimous (настраивается в ACL xpages: All Properties Xpage -> data\acl) с нужной инфой
    дальше, или кнопа "войди не понарошку", либо, автоматом, скриптом на beforePageLoad вызвать логин-диалог или логин-страничку и, при успехе, средиректить с этой странички на нужную. Можно редиректить, в зависимости от прав, на разные странички.
    Или, в зависимости от ACL разрешить напр. редактирование:
    Код (Java):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    ................................
      <xp:this.acl>
        <xp:acl>
           <xp:this.entries>
              <xp:aclEntry type="ANONYMOUS" right="READER"></xp:aclEntry>
              <xp:aclEntry type="DEFAULT" right="EDITOR"></xp:aclEntry>
           </xp:this.entries>
        </xp:acl>
    </xp:this.acl>
    ...................................
    </xp:view>
    Примеров логин-диалогов в инете море.
    =================================
    А если не доминошный, то токен, хотя он не решает проблем секурити.
    Тут действия - запросить у сервера некую инфу на некий пароль (это уж своя "секуризация";)). Сервер отдаёт её с некой "защитой" (токен)
    и дальше тот же редирект или разрешения на редактирование.
    И не надо тут ничего мудрить, задачи стандартные: запросить у сервака инфу (обратившись к агенту или, хоть, попробовать её найти напр. в вьюшке по ключу)\получить ответ\отреагировать нужным образом.
     
  5. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Есть задачи - SSO с региональными системами, которые юзают CAS...
    Я не говорю об 2-факторке...
     
  6. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    В вопросе @lionk этого нет. А домысливать можно всё, что угодно...
     
  7. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    ты не понял. сделать свой аякс логин диалог не проблема.
    ягодка в том что пользователю не нужен этот диалог вообще.
    при данной авторизации пользователь вообще не вводит доминошный пароль. все тяготы безопастности лежат на гугле (сразу в сторону откладывай обсуждения надёжности такой модели).
    идиология - если ты авторизовался раз в гугле, то авторизован и в домино.
    выгода одна - убрать дополнительный шаг авторизиции(ввода логина\пароля домино). и всё. банальное удобство.

    тоже нагуглил
    вот пример как залогинится если он у тебя уже есть.
    http://lotusnotus.com/lotusnotus_en...notes-users-for-web-apps-automatically....htm

    а где взять
    public final String SSO_DOMINO_SECRETFIELD="LTPA_DominoSecret";
    public final String SSO_DOMINO_DURATIONFIELD="LTPA_TokenExpiration";
    из этого примера?
    https://github.com/markleusink/Auto...F/src/com/developi/openntf/LtpaGenerator.java

    почитал апи.
    в ssjs есть такой вызов session.getSessionToken() должен дать текущий токен пользователя.
    засунул компутед поле - получаю ошибку, ЧЯДНТ?
     
  8. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    он берет ее из АК сервера.
    и конструирует токен из секрет ключа, даты устаревания и т.п....
    т.е. при этом юзер может вообще быть левым. и секурность базируется на SHA1 хеше от всего этого компота.

    ну а откуда текущий возметься если его еще нет?:)
     
  9. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    так я ввёл логин пароль:), не зажадничал.
    а вот домино всёравно null - error лепит как будто такой функции нет.
     
  10. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    а это делал - " just duplicate your 'Web SSO Configuration' document and clear 'Organization' field on the second one."
     
  11. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    стоп, а у меня Single-Server авторизация. неужели она накладывает ограничения.
     
  12. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    из хелпа - "The name of a server configured for Single Sign-on..."
    Вообще говоря .getSessionToken() для первоначальной задачи мало полезно.


    Пример из https://github.com/markleusink/Auto...F/src/com/developi/openntf/LtpaGenerator.java можно модиклицировать - в ф-цию
    public String generateLtpaToken(String userName) добавить в качестве параметров ,duration и ltpaSecret и можно использовать в LS2J для генерации токена. Надо заметить что это именно генерация LTPA1, что в принципе достаточно для авторизации в домино...
     
  13. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    Перенастроил на SSO, взял библиотеку и заработало. шок.
    Не понятно как но генерит токен, и он рабочий.

    Трабла только с кириллицей. Имя залогиненого пользователя выходит таким ?????????/OU/C и соответственно ацл базы не работает.
    Залил рекомендуемые либы, не помогло.
    Думаю может проблема в лангпаке, если у кого есть к 9.0.1 линукс, поделитесь :angelic:.
     
  14. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    какую из?
    Я public String generateLtpaToken переделал для использования LS2J и оно генерит токен - с редиректом пока не проверял..
    Т.е. если из клиента ЛН авторизоватся на сайте - то не нужен getSessionToken... можно будет брать любой ключ с сервера...
     
  15. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    вот эту.
    https://github.com/markleusink/Auto...F/src/com/developi/openntf/LtpaGenerator.java

    там же в примере:
    response.setHeader("Set-Cookie", "LtpaToken=" + token + "; domain=.developi.info; path=/");
    facesContext.getExternalContext().redirect(someUrl);

    устанавливаешь куку и просто рефрешиш страничку. домино при рафреше хавает токен и присваивает сессии права пользователя закодированного в токене из куки.
     
  16. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Ну тогда прикрутить CAS нет проблем) и вообще - можно реализовать произвольный алгоритм авторизации в домино - даже по CallBack sms...
     
  17. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    Могу сообщить, что jasig CAS к домино прикручен - на очереди SPNEGO\ntlm через CAS+Domino и интеграция c ЕСИАиА (портал госуслуг - SAML).
    SPNEGO через CAS привлекателен тем, что не нужны заморочки с членством в домене сервера домино...
     
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    у меня вопрос, если есть фронт - то зачем токен (доминошный)?
    ведь фронт просто может сунуть домине юзера
     
    #18 lmike, 3 авг 2015
    Последнее редактирование модератором: 3 авг 2015
  19. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    795
    Симпатии:
    78
    А как например фронт сунет юзера доминошного?
    И зачем фронту его сувать? Если например есть фигова туча сервисов работающих от одного центра авторизации... Что, доминоха рыжый что ли?:)
     
  20. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ну доминошного - это условно - того, кот. домина понимает, здесь больше вопрос - зачем доминошный токен
     
Загрузка...
Похожие Темы - Смена состояния пользовательской
  1. dimat
    Ответов:
    6
    Просмотров:
    2.436
  2. NickProstoNick
    Ответов:
    8
    Просмотров:
    3.336
  3. FBUS
    Ответов:
    0
    Просмотров:
    3.328
  4. makaset
    Ответов:
    9
    Просмотров:
    5.397
  5. OverClocker
    Ответов:
    0
    Просмотров:
    1.028

Поделиться этой страницей