Авторизация Xpages В Браузере Без Пары Логин\пароль

07.03.2008
22
0
#1
Доброго времени суток, друзья!
Есть ли возможность авторизации через вэб без ввода пары логин\пароль, если запущен локальный клиент лотуса?
Заранее спасибо!
 

rinsk

Lotus team
12.11.2009
904
44
#3
ну как - получилось?
У нас вылезает 'Your session has expired'. Вместо xPage заюзали агент с

Print {Set-Cookie: LtpaToken=}+token+{; domain=.doman.org; path=/}+Chr(13)
Print "Location: "+param("url")+Chr(13)
Print "Content-type: text/html"+Chr(13)+Chr(10)
 

rinsk

Lotus team
12.11.2009
904
44
#4
Все получилось и работает! надо было что бы оба документа LtpaToken были одинаковыми - что и писалось по ссылке выше.
 

rinsk

Lotus team
12.11.2009
904
44
#6
Много времени прошло - проект не взлетел(
Помню что проблема в основном были с интернет сайт доками. Нужно разбираться.
Вообще говоря есть другой путь - это формирование самостоятельно токена из секрет ключа. Недавно тут было - поискать по слову CAS...
Вот оно точно работает ...
Вот - http://codeby.net/forum/threads/56756/#post-258449
 

rinsk

Lotus team
12.11.2009
904
44
#7
Вот эту часть закатывается в LS2J или в Java агент и подсовывается лотусовое имя пользователя и Ltpa secret . Способов - куча.
Java:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.GregorianCalendar;
import javax.xml.bind.DatatypeConverter;
  
public class ltpagen {
public String generateLtpaToken(String userName,int duration,String ltpaSecret) {
		  
	MessageDigest sha1 = null;
 
	GregorianCalendar creationDate=new GregorianCalendar();
	GregorianCalendar expiringDate=new GregorianCalendar();
   
	expiringDate.add(GregorianCalendar.MINUTE, duration);
	 
	try {
	  sha1 = MessageDigest.getInstance( "SHA-1" );
	} catch (NoSuchAlgorithmException e) {
	  e.printStackTrace(System.err);
	}
 
	byte[] secretDecoded=DatatypeConverter.parseBase64Binary(ltpaSecret);
	byte[] tokenBase=("\000\001\002\003"+getHexRep(creationDate)+getHexRep(expiringDate)+userName).getBytes();
	byte[] digest=sha1.digest(concatBytes(tokenBase, secretDecoded));
   
	return DatatypeConverter.printBase64Binary(concatBytes(tokenBase, digest));
	 
  }
 
  public static byte[] concatBytes(byte[] arr1, byte[] arr2) {
	byte[] result=Arrays.copyOf(arr1, arr1.length+arr2.length);
	System.arraycopy(arr2, 0, result, arr1.length, arr2.length);
	return result;
  }
   
  public static String getHexRep(GregorianCalendar date) {
	int timeVal=(int)(date.getTimeInMillis()/1000);
	String hex=Integer.toHexString(timeVal).toUpperCase();
	
	if(hex.length()>=8) {
	  return hex;
	} else {
	 return ("00000000"+hex).substring(-8);
	  //return String.format("%0"+(8-hex.length())+"d", 0)+hex;
	}
  }
  }
/////////////////// end token generator
 

savl

Lotus team
28.10.2011
2 136
105
#8
@rinsk, спасибо.
Я так понимаю этот код нужен для агента перенаправления, верно?
 

rinsk

Lotus team
12.11.2009
904
44
#9
да. т.е. лотус клиент формирует урл в котором вставляется нужное имя пользователя, и куда редиректить.
агент парсит все, дергает есл надо секр ключ, формирует куку и делает редирект. т.е. 1 агент на сервере.
там же если вдруг REMOTE_USER нужный - просто редирект.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#10
чета не могу справиться с устареванием сессии Статья - Lotus Domino + Document Server ONLYOFFICE
формирую куку: var cookies="LtpaToken=" + token + "; domain=" + domain + "; path=/";
делаю: conn.setRequestProperty("Cookie", cookies);
и эпизодически ловлю страницу авторизации, со статусом ReasonType=3 - сессия истекла
м.б. надо еще и сессию формировать, но как?
 

rinsk

Lotus team
12.11.2009
904
44
#11
Таких проблем с устареванием сессии не наблюдалось.
Правда страницы все были не xPage
Главное там - что бы конфиг SSO на сервере был Muliti... (SSO). ну и в токене прописаны Expiration и Timeout.
SessionID - оно же формирует само, после обращения к странице - нет?
В xPage - есть проблема устаревания сессии - она где то там регулируется или есть решение на базе polling-а...
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#12
Таких проблем с устареванием сессии не наблюдалось.
Правда страницы все были не xPage
Главное там - что бы конфиг SSO на сервере был Muliti... (SSO). ну и в токене прописаны Expiration и Timeout.
SessionID - оно же формирует само, после обращения к странице - нет?
В xPage - есть проблема устаревания сессии - она где то там регулируется или есть решение на базе polling-а...
я передаю токен в параметрах запроса..., полагал что он base64 (DatatypeConverter.printBase64Binary(concatBytes(tokenBase, digest));) и д.б. нечувствителен к такому способу, но оказалось что-то не так ;)
после того как стал base64 (из SSJS) дополнительно еще делать - вроде все "успокоилось"