Achteraf Security inbouwen bij Apex applicaties

Apex is een tool die met name handig is in een RAD omgeving en hierbij kan het gebeuren dat pas later in het ontwikkelproces duidelijk wordt welke pagina’s publiek moeten zijn en welke alleen te zien mogen zijn voor ingelogde gebruikers. Om alle pagina’s achteraf te voorzien van verschillende autorisation schemes is nogal een gedoe. Ik zal een oplossing beschrijven voor het inbouwen van eenĀ  autorisatiemechanisme waarbij per applicatie op 1 centraal punt wordt bijgehouden welke pagina’s publiekelijk toegankelijk zijn en welke niet en welke gebruikers groepen toegang hebben tot welke applicaties.

Stel je hebt 2 Apex applicaties gebouwd in 1 Apex workspace en er moet achteraf een autorisatie structuur worden ingebouwd die aan de volgende eisen voldoet:

- De ene gebruikers groep heeft tot de ene applicatie toegang en een andere groep heeft toegang tot de andere applicatie
- Apex ontwikkelaars moeten toegang hebben tot alle pagina’s
- de inlogpagina’s moeten publiek toegankelijk zijn

Stap 1: Maak per applicatie een authorization Scheme aan
Home > Application Builder > Application ## > Shared Components > Authorization Schemes. Maak deze van het type PL/SQL Function returning Boolean.

Voor de plsql voer je de volgende code in:

begin
if APEX_UTIL.CURRENT_USER_IN_

GROUP( p_group_name=> ‘usergroup1′)
or
APEX_UTIL.GET_USER_ROLES( p_username=> v(‘APP_USER’) ) like ‘%EDIT%’
or
v(‘APP_PAGE_ID’) = 216 /*inlog pagina id*/
then
return true;
else
return false;
end if;
end;

Stap 2: maak per applicatie een usergroup aan en koppel de users aan de groepen.
Home > Administration > Manage Application Express User

Stap 3: Koppel de applicaties aan de het authorization scheme:
Home > Application Builder > Application### > Shared Components > Edit Security Attributes. Bij de poplist ‘Authorization Scheme’ zijn de in stap 2 aangemaakte autorization Schemes zichtbaar. Doe dit voor alle applicaties.

En je application security is ingebouwd!

Tags: ,

Reageren

U moet inloggen om te reageren.