Oracle SSO背后的ASP.NET应用程序 - 匿名访问?

时间:2009-05-07 19:06:51

标签: asp.net oracle single-sign-on

我们有一个客户端希望保护的ASP.NET应用程序通过Oracle SSO 也允许匿名访问应用程序。

没有一个标准的Oracle SSO插件具有匿名访问选项,因此我们编写了一个自定义的Java SSO插件来检查Portal / SSO会话cookie并执行基本的Oracle SSOServerAuth,否则如果它们没有SSO cookie (匿名访问) - 返回Oracle PUBLIC用户。

有没有人有这样的场景才能真正正常工作?有更好的方法吗?

我们正在使用Oracle SSO IIS插件,它在某些情况下有效 - 但我们在Portal中看到一些奇怪的行为,在将用户作为oracle PUBLIC用户进行身份验证后发生:

登录表单不能与相同安全级别的自定义和默认插件一起使用。由于自定义插件的安全级别低于默认插件,即使用户使用其他帐户登录Portal,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 :(得分:0)

原来这个问题的答案是在尝试允许用户以非PUBLIC用户身份登录之前删除由IIS SSO插件创建的IAS_IDXXXXXXXX cookie。