2

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

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

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

我们正在使用 Oracle SSO IIS 插件,它在某些情况下可以工作 - 但我们看到在将用户身份验证为 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);
  }
  }
4

1 回答 1

0

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

于 2009-06-05T15:07:44.847 回答