Проверка подлинности Jespa NTLM не выполняется в одной среде - PullRequest
0 голосов
/ 16 марта 2011

У меня есть некоторый код Java, который должен пройти аутентификацию на сервере Sharepoint, на котором выполняется аутентификация NTLM. У меня этот код работает нормально в командной строке в моей IDE, но когда я внедряю его в Liferay как портлет, он просто завершается с 401 Unauthorized.

Код точно такой же, за исключением того, как он вызывается. Один - во время метода портлета doView () (фаза визуализации портлета), а другой (который работает) - из общедоступного метода static static void main.

Я установил регистрацию Jespa на уровне 4, чтобы увидеть результат. В среде IDE NetBeans:

HttpPeer: state=ST_SENT
HttpPeer: state=ST_RECEIVED status=401
NtlmSecurityProvider: null
HttpPeer: state=ST_SENT
HttpPeer: state=ST_RECEIVED status=401
NtlmSecurityProvider: NTLM2 Session Security key negotiated successfully
NtlmSecurityProvider: Initiator negotiated NTLMv2
HttpPeer: state=ST_SENT
HttpPeer: state=ST_RECEIVED status=200

В логах Liferay:

HttpPeer: state=ST_SENT
HttpPeer: state=ST_RECEIVED status=401
NtlmSecurityProvider: null
HttpPeer: state=ST_SENT
HttpPeer: state=ST_RECEIVED status=401
18:37:58,578 ERROR [SharepointListPortlet:76] 
java.security.PrivilegedActionException: our.portlet.util.HttpException: 401 Unauthorized
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at jespa.security.RunAs.runAs(RunAs.java:261)
    at jespa.security.RunAs.runAs(RunAs.java:269)

Возможно, это что-то простое, но я не могу понять, как это сделать. Я просмотрел весь пример кода Jespa и ничего не нашел. Конечно, Jespa - это коммерческий продукт, и я просто оцениваю его, поэтому не могу платить за поддержку. Если у кого-нибудь есть предложения, буду благодарен.

1 Ответ

0 голосов
/ 01 ноября 2011

Поддержка IOPLEX все равно поможет вам, даже если вы еще не приобрели продукт.

Что касается вашего вопроса, вместо использования javax.security.auth.Subject для предоставления учетных данных, попробуйте предоставить учетные данные, используя "свойства заголовка". Может быть, ваша штуковина Liferay создает новые потоки, а учетные данные, основанные на теме, удаляются. Эта функция нигде не документирована (и как таковая технически она не поддерживается), но посмотрите на examples / HttpGetWithHeaderProperties.java.

...