У меня есть некоторый код 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 - это коммерческий продукт, и я просто оцениваю его, поэтому не могу платить за поддержку. Если у кого-нибудь есть предложения, буду благодарен.