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

Oracle SSO背后的ASP.NET应用程序-匿名访问?,asp.net,oracle,single-sign-on,Asp.net,Oracle,Single Sign On,我们有一个ASP.NET应用程序,客户端希望通过Oracle SSO保护该应用程序,并允许匿名访问该应用程序 没有一个标准的Oracle SSO插件具有匿名访问选项,因此我们编写了一个自定义java SSO插件来检查门户/SSO会话cookie,并执行基本Oracle SSOServerAuth,否则,如果它们没有SSO cookie(匿名访问),则返回Oracle公共用户 有人有这样的场景可以正常工作吗?有更好的方法吗 我们使用的是Oracle SSO IIS插件,它在某些情况下可以工作-但我

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

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

有人有这样的场景可以正常工作吗?有更好的方法吗

我们使用的是Oracle SSO IIS插件,它在某些情况下可以工作-但我们在门户中看到一些奇怪的行为,这些行为是在将用户验证为Oracle公共用户后发生的:

登录表单不能在同一安全级别上与自定义插件和默认插件一起使用。由于自定义插件的安全级别低于默认插件,因此即使用户使用另一个帐户登录门户,也会以某种方式为合作伙伴应用程序保留公共身份验证

这是我们的自定义插件:

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);
  }
  }
公共类混合身份验证程序
扩展SSOServerAuth
实现IPASAuthInterface
{
公共混合身份验证程序()
{
}
公共IPASUserInfo身份验证(HttpServletRequest请求)
抛出IPASautheException,IPASuncientCredeException
{
布尔foundPortalUser=false;
Cookie[]cookies=request.getCookies();
如果(cookies!=null)
{

对于(int i=0;i结果是,在您尝试允许用户以非公共用户身份登录之前,删除IIS SSO插件创建的IAS_IDXXXXXXXX cookie。

结果是,在您尝试允许用户以非公共用户身份登录之前,删除IIS SSO插件创建的IAS_IDXXXXXXXX cookie