У нас есть приложение ASP.NET, которое клиент хотел бы защитить через Oracle SSO и также разрешают анонимный доступ к приложению.
Ни один из стандартных плагинов Oracle SSO не имеет опцию анонимного доступа, поэтому мы написали собственный плагин java SSO для проверки файлов cookie сеанса Portal / SSO и создания базового Oracle SSOServerAuth, а в противном случае, если у них нет cookie-файла SSO (анонимный доступ) - вернуть пользователя Oracle PUBLIC.
У кого-нибудь есть такой сценарий, который действительно работает должным образом? Есть ли лучший способ сделать это?
Мы используем плагин Oracle SSO IIS, и он работает в некоторых случаях - но мы видим некоторое странное поведение в Portal, которое происходит после аутентификации пользователя как пользователя oracle PUBLIC:
Формы входа не работают с пользовательским и стандартным плагином на одном уровне безопасности. А благодаря тому, что пользовательский плагин имеет более низкий уровень безопасности, чем плагин по умолчанию, 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);
}
}