我们有一个客户端希望保护的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);
}
}
答案 0 :(得分:0)
原来这个问题的答案是在尝试允许用户以非PUBLIC用户身份登录之前删除由IIS SSO插件创建的IAS_IDXXXXXXXX cookie。