Не удается получить HTTP-заголовок в поставщике пользовательской аутентификации COGNOS

Я работаю над реализацией поставщика пользовательской аутентификации 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);
    }
}

person user961954    schedule 21.09.2012    source источник


Ответы (1)


Используйте SystemRecoverableException SDK — Как использовать SystemRecoverableException для получения доверенной переменной

person user961954    schedule 04.10.2012