Я работаю над реализацией поставщика пользовательской аутентификации COGNOS (Java) с SSO (Oracle Access manager (OAM)).
Принцип работы OAM заключается в том, что он ищет действительный файл cookie токена сеанса в каждом запросе HTTP/HTTPS и, если не находит, перенаправляет на страницу входа в систему OAM.
Если файл cookie действителен/авторизован, он также добавляет ЗАГОЛОВОК HTTP, устанавливает в нем имя пользователя и перенаправляет на URL-адрес Cognos. Теперь Cognos отправляет этот вызов в Custom Authentication Provider.
Теперь моя проблема в том, что я не могу прочитать это значение заголовка внутри пользовательского поставщика аутентификации. Я попытался добавить страницу ASP, и она может читать значения, это доказывает, что значения передаются, и это какая-то проблема с тем, как я делаю это в коде CAP Java.
Фрагмент кода, который я пытаюсь использовать.
Примечание. Я могу получить файл cookie в порядке, но все заголовки всегда равны NULL. Примечание 2. Я пытался использовать как INamespaceAuthenticationProvider/IBiBusHeader, так и INamespaceAuthenticationProvider2/IBiBusHeader2.
public class CAPClass extends Namespace
implements INamespaceAuthenticationProvider
{
private String GetSingleValue(String[] value)
{
if(value != null && value.length > 0)
return value[0];
else
return null;
}
public void createLogs(String var, IBiBusHeader theAuthRequest)
{
CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getEnvVarValue(var)));
CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getTrustedEnvVarValue(var)));
CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getCredentialValue(var)));
//CreateLog.LogMsg(var + ": " + GetSingleValue(theAuthRequest.getTrustedCredentialValue(var)));
}
public IVisa logon(IBiBusHeader theAuthRequest)
throws UserRecoverableException, SystemRecoverableException,
UnrecoverableException
{
String var = "ObSSOCookie";
String SessTok = GetSingleValue(theAuthRequest.getCookieValue(var));
CreateLog.LogMsg(var + ": " + SessTok);
var = "REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HTTP_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HEADER_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HEADER_HTTP_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HTTP_HEADER_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "SSO_LOGIN_ID";
createLogs(var, theAuthRequest);
var = "HTTP_SSO_LOGIN_ID";
createLogs(var, theAuthRequest);
var = "HEADER_SSO_LOGIN_ID";
createLogs(var, theAuthRequest);
var = "HEADER_HTTP_SSO_LOGIN_ID";
createLogs(var, theAuthRequest);
var = "HTTP_HEADER_SSO_LOGIN_ID";
createLogs(var, theAuthRequest);
var = "OAM_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HTTP_OAM_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HEADER_OAM_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HEADER_HTTP_OAM_REMOTE_USER";
createLogs(var, theAuthRequest);
var = "HTTP_HEADER_OAM_REMOTE_USER";
createLogs(var, theAuthRequest);
}
}