ASP.NET App за Oracle SSO - анонимный доступ? - PullRequest
2 голосов
/ 07 мая 2009

У нас есть приложение ASP.NET, которое клиент хотел бы защитить через Oracle SSO и также разрешают анонимный доступ к приложению.

Ни один из стандартных плагинов Oracle SSO не имеет опцию анонимного доступа, поэтому мы написали собственный плагин java SSO для проверки файлов cookie сеанса Portal / SSO и создания базового Oracle SSOServerAuth, а в противном случае, если у них нет cookie-файла SSO (анонимный доступ) - вернуть пользователя Oracle PUBLIC.

У кого-нибудь есть такой сценарий, который действительно работает должным образом? Есть ли лучший способ сделать это?

Мы используем плагин Oracle SSO IIS, и он работает в некоторых случаях - но мы видим некоторое странное поведение в Portal, которое происходит после аутентификации пользователя как пользователя oracle PUBLIC:

Формы входа не работают с пользовательским и стандартным плагином на одном уровне безопасности. А благодаря тому, что пользовательский плагин имеет более низкий уровень безопасности, чем плагин по умолчанию, PUBLIC-аутентификация как-то сохраняется для партнерского приложения, даже если пользователь входит в портал с другой учетной записью.

Вот наш пользовательский плагин:

public class MixedAuthenticator
       extends SSOServerAuth
       implements IPASAuthInterface
{

  public MixedAuthenticator()
  {
  }

  public IPASUserInfo authenticate(HttpServletRequest request)
         throws IPASAuthException, IPASInsufficientCredException
  {

       boolean foundPortalUser = false;

           Cookie[] cookies = request.getCookies();

           if(cookies != null)
           {
               for(int i=0; i<cookies.length; i++)
               {
                   Cookie cookie = cookies[i];

                   if(cookie.getName().equalsIgnoreCase("portal"))
                   {
                        foundPortalUser = true;
                   }
               }
           }

        if(foundPortalUser)
        {
            return super.authenticate(request);
        }
        else
        {
                IPASUserInfo anonUser = new IPASUserInfo("PUBLIC");
                return anonUser;
        }
  public URL getUserCredentialPage(HttpServletRequest request, String message)
  {
    return super.getUserCredentialPage(request, message);
  }
  }

1 Ответ

0 голосов
/ 05 июня 2009

Оказалось, что ответом на это было удаление файла cookie IAS_IDXXXXXXXX, созданного подключаемым модулем единого входа IIS, перед тем как попытаться разрешить пользователю войти в систему как пользователь, не являющийся общедоступным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...