我们有一个 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);
  }
  }