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